概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: Rails deprecates `db:structure:load` and `db:structure:dump` tasks | Saeloun Blog
- 原文公開日: 2020/09/30
- 著者: Vamsi Pavan Mahesh
- サイト: Saeloun Blog | Ruby on Rails Consulting Company based in San Francisco and Boston
Rails: db:structure:loadとdb:structure:dumpタスクが非推奨化(翻訳)
Rails 6.1でdb:structure:loadタスクとdb:structure:dumpタスクが非推奨化されました(#39470)。
⚓ 変更前
config.active_record.schema_formatは、データベーススキーマをファイルにダンプするときのフォーマットを制御します。この設定で有効なオプションは:ruby(デフォルト)と:sqlです。
rails db:schema:{dump,load}を実行するとdb/schema.rbファイルをダンプdb/schema.rbファイルをダンプまたは読み込みます。rails db:structure:{dump.load}を実行すると、config.active_record.schema_formatで指定した値にかかわらずdb/structure.sqlファイルをダンプまたは読み込みます。
⚓ 変更後
rails db:schema:{dump,load}コマンドとrails db:structure:{dump,load}コマンドのどちらを実行した場合にも、config.active_record.schema_formatで指定した値に応じてrails db:schema:{dump,load}が実行されるようになります。
つまり、rails db:schema:dumpまたはrails db:structure:dumpを実行すると、db/schema.rbファイルをダンプします。
config.active_record.schema_formatで:sqlという値を指定してrails db:schema:dumpまたはrails db:structure:dumpを実行すると、db/stucture.sqlファイルをダンプします。
rails db:structure:{dump,load}を実行すると非推奨の警告が表示されます(これらのコマンドはRails 6.2で削除される予定です)。
DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2.
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql`
and
run `bin/rails db:schema:load` instead
注意: 上の非推奨メッセージを表示するには、config.active_support.deprecation = :stderrを設定しておく必要があります。