SQLファイルによるRails DBスキーマ管理

(image)SQLファイルによるRails DBスキーマ管理

Railsではdb:migrateすると、デフォルトでdb/schema.rbを生成しますが、SQLでスキーマ情報を管理することも可能です。下記のようにconfig/application.rb内でactive_record.schema_format:sqlと設定することで可能になります(デフォルト値は:ruby)。

# config/application.rb
module RailsApp
  class Application < Rails::Application
    config.active_record.schema_format = :sql
  end
end

これでdb/migrateするとデフォルトのschema.rbではなく、db/structure.sqlというSQLファイルを吐きます。

structure.sqlをロードする

生成されたstructure.sqlファイルは、下記のコマンドでデータベースへロードできます。

$ rails db:structure:load

SQLファイルだけ欲しい場合

SQLダンプファイルのみが欲しい場合は、config.active_record.schema_formatの設定を変えずとも下記コマンドでstructure.sqlのみを生成することができます。

$ rails db:structure:dump

参考