すがブロ

sugamasaoのhatenablogだよ

Rails 6のコマンド周りで変わる細かい点(rc1調べ)

ブログを書くリハビリ

Rails 6.0で変わるであろうと思われる点のメモ

これのもうちょっと正確な説明ですが、bin/rails updatebin/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 updatebin/rails setupbin/rails setup に統合

こちらが本題ですが、実装がほとんど同じジャン?ということでupdateはsetupを実行する形に変更されました。上記で追加された db:prepare を使うことで、動作的にもupdateとsetupを使い分けずとも同じ挙動になったわけですね。

これもPRを見たほうがわかりやすいでしょう https://github.com/rails/rails/pull/33139

そのうちupdateは無くなるんですかね。