🐷
rails db:structure:{dump,load} が廃止されるよという話
特に書くトピックがなかったので、最近業務で対応したことについて...
結論
Rails7.0からrailsタスクであるrails db:structure:load
とrails db:structure:dump
が廃止され、rails db:schema:{dump,load}
に統一されます。
参照PR: https://github.com/rails/rails/pull/39470
これまで (Rails6系まで)
Rails6.1系までは、両者は使い分けられていました。
rails db:schema:{dump,load}
db/schema.rb
をdump or load していました。
rails db:structure:{dump,load}
db/structure.sql
をdump or load していました。
ただRails6.1 に上げたときから警告が出るようになりました。
DEPRECATION WARNING: Using `bin/rails db:structure:load:primary`
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:primary` instead.
(called from <top (required)> at ./bin/rails:9)
これから (Rails7系から)
警告を読めば書いてあるのですが、
-
bin/rails db:structure:load
は非推奨になり、Rails6.2で削除されます。- 実際には 6.2 ではなく 7.0 で開発されています。 参照
-
bin/rails db:schema:load
でstructure.sql
を使うために、config.active_record.schema_format = :sql
を設定してください。
つまりタスクはrails db:schema:{dump,load}
に統一され、
config/application.rb
あたりにconfig.active_record.schema_format = :sql
を設定すればdb/structure.sql
、特に何も設定しなければdb/schema.rb
をもとにタスクが実行されます。
以上、小ネタでしたー
Discussion