2020/11/3にrails 6.1.rc1がリリースされました🎉
ほぼピュアなRailsアプリケーションなので、あんまり実務的にはそこまで参考にならないですが個人で運用しているアプリケーションを6.1.rc1
にアップグレードしたので手順とかをMEMO📝
ちなみに6.0から6.1の破壊的変更まわりはedgeguides.rubyonrails.orgにrails 6.0から6.1のupgrade guideが公開されているので気になる人は見てみてください。
またリリースノートはこちら📒
↓実際にupgradeしたPR
rails 6.1にbundle update
まずはGemfileのrailsのバージョンを上げて
gem 'rails', '~> 6.1.rc1'
bundle update
します。
$ bundle update rails
実務ではconservative
オプションを付けて必要最低限のgemだけアップグレードするようにすると影響範囲が限定的になって良いと思います。
--conservative Use bundle install conservative update behavior and do not allow shared dependencies to be updated.
設定ファイルを更新
rails app:update
を使ってもいいのですが、railsdiff
で設定ファイルの差分を見て、手動で取り込む方法にしました。
http://railsdiff.org/6.0.3.4/6.1.0.rc1
気になったところ
ほぼピュアなRailsアプリケーションなので殆ど修正する箇所は無く、あまり参考にならないのですが、一応テストが落ちるようになったような修正としては以下ぐらいでした。
環境別の設定ファイルで"active_support/core_ext/integer/time"
を明示的にrequire
する
タイトルの対応が以下のコミットで入っています👀
設定ファイル内の影響がありそう部分(config.public_file_server.headers
の'Cache-Control' => "public, max-age=#{1.hour.to_i}"
)が入ったのがどうやら2年前みたいなのですが、rails 6.1でロードの順番とかが変わったのかと思ったのですが🤔
config.active_support.bare
を無効な場合でも起動時にエラーとならないようにした意図のようですね🙌
config.active_support.bare: Rails起動時にactive_support/allの読み込みを行なうかどうかを指定します。デフォルトはnilであり、この場合active_support/allは読み込まれます。
おわりに
Rails 6.1ではstrict_loading
やDelegated types
、複数DB周りの改善、routesの分割等、気になる機能も多いですね・・・!✨