読者です 読者をやめる 読者になる 読者になる

【Rails】スキーマ情報管理(schema.rbとstructure.sql)

Ruby on Rails
スポンサーリンク

schema.rb と structure.sql を使用したスキーマ情報管理について。

スキーマ情報について

テーブルを変更した時にrake db:migrateを実行するとconfig/schema.rbに Ruby 形式でスキーマ情報が保存されます。SQL でスキーマ情報を保存したい場合はconfig/application.rbenvironmentなどでもOK)に以下の設定を追加してください。指定できるのは:ruby:sqlでデフォルトは:rubyです。

config.active_record.schema_format = :sql

この状態でrake db:migrateを実行するとconfig/structure.sqlに保存されます。

 設定ファイル(config) - - Railsドキュメント

スキーマ情報の生成

上記の設定がなくても以下のコマンドを使うと、その時点のデータベースの状態で全てのスキーマファイルが作成されます。例えば通常はschema.rbに保存するようにしていてもstructure.sqlを生成することは可能です。

# schema.rbを作成
rake db:schema:dump
# structure.sqlを作成
rake db:structure:dump

データベースを作成

以下のコマンドでスキーマファイルを読み込み、データベースを再作成することができます。ただし既存のデータが削除されてしまうので注意して下さい。

# schema.rbを読み込み
rake db:schema:load
# structure.sqlを読み込み
rake db:structure:load

 Rake - - Railsドキュメント