ブログを書くリハビリ
Rails 6.0で変わるであろうと思われる点のメモ
rails6rc1を舐めるようにみていた結果、bin/setupとbin/updateが統合されたことを知る
— ルビー・カンタン・太郎 (@sugamasao) April 25, 2019
これのもうちょっと正確な説明ですが、bin/rails update
とbin/rails setup
の話の前に bin/rails db:prepare
の説明が必要なんです。
rails db:prepare
タスクの追加
PRはこちら https://github.com/rails/rails/pull/35768
タスク名より実装を見たほうがわかりやすいですが、DBが作成されていれば migrate
を、そうでなければ setup
を実行するタスクです。migrateとsetupの使い分けをしなくて良い便利タスクですね。
# PRのFiles Changedから抜粋 task prepare: :load_config do ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).each do |db_config| ActiveRecord::Base.establish_connection(db_config.config) db_namespace["migrate"].invoke rescue ActiveRecord::NoDatabaseError db_namespace["setup"].invoke end end
bin/rails update
と bin/rails setup
が bin/rails setup
に統合
こちらが本題ですが、実装がほとんど同じジャン?ということでupdateはsetupを実行する形に変更されました。上記で追加された db:prepare
を使うことで、動作的にもupdateとsetupを使い分けずとも同じ挙動になったわけですね。
これもPRを見たほうがわかりやすいでしょう https://github.com/rails/rails/pull/33139
そのうちupdateは無くなるんですかね。