Madogiwa Blog

主に技術系の学習メモに使っていきます。

Ruby on Rails: Rails 6.1.rc1が出たので個人Webアプリケーションを6.0.3.4から上げてみた🚃

2020/11/3にrails 6.1.rc1がリリースされました🎉

github.com

ほぼピュアなRailsアプリケーションなので、あんまり実務的にはそこまで参考にならないですが個人で運用しているアプリケーションを6.1.rc1にアップグレードしたので手順とかをMEMO📝

ちなみに6.0から6.1の破壊的変更まわりはedgeguides.rubyonrails.orgrails 6.0から6.1のupgrade guideが公開されているので気になる人は見てみてください。

edgeguides.rubyonrails.org

またリリースノートはこちら📒

edgeguides.rubyonrails.org

↓実際にupgradeしたPR

github.com

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.

https://bundler.io/man/bundle-update.1.html#OPTIONS

設定ファイルを更新

rails app:updateを使ってもいいのですが、railsdiffで設定ファイルの差分を見て、手動で取り込む方法にしました。

http://railsdiff.org/6.0.3.4/6.1.0.rc1

気になったところ

ほぼピュアなRailsアプリケーションなので殆ど修正する箇所は無く、あまり参考にならないのですが、一応テストが落ちるようになったような修正としては以下ぐらいでした。

環境別の設定ファイルで"active_support/core_ext/integer/time"を明示的にrequireする

タイトルの対応が以下のコミットで入っています👀

github.com

設定ファイル内の影響がありそう部分(config.public_file_server.headers'Cache-Control' => "public, max-age=#{1.hour.to_i}")が入ったのがどうやら2年前みたいなのですが、rails 6.1でロードの順番とかが変わったのかと思ったのですが🤔

github.com

config.active_support.bare を無効な場合でも起動時にエラーとならないようにした意図のようですね🙌

config.active_support.bare: Rails起動時にactive_support/allの読み込みを行なうかどうかを指定します。デフォルトはnilであり、この場合active_support/allは読み込まれます。

Rails アプリケーションを設定する - Railsガイド

おわりに

Rails 6.1ではstrict_loadingDelegated types、複数DB周りの改善、routesの分割等、気になる機能も多いですね・・・!✨

参考

inside.pixiv.blog

Rails6.1で新しく入る機能について - Speaker Deck