2023/10/05にRuby on Rails v7.1がリリースされました🎉
個人のwebサービスなので以下のように規模はかなり小さめですがやったこととかをメモ📝
+----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 572 | 425 | 21 | 71 | 3 | 3 | | Helpers | 51 | 37 | 0 | 8 | 0 | 2 | | Jobs | 31 | 23 | 3 | 2 | 0 | 9 | | Models | 1100 | 712 | 32 | 102 | 3 | 4 | | Mailers | 6 | 4 | 1 | 0 | 0 | 0 | | Views | 393 | 371 | 0 | 0 | 0 | 0 | | JavaScript | 3033 | 2195 | 0 | 2 | 0 | 1095 | | Libraries | 262 | 214 | 5 | 18 | 3 | 9 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 5448 | 3981 | 62 | 203 | 3 | 17 | +----------------------+--------+--------+---------+---------+-----+-------+
やったこと
installするRailsのバージョンを更新
dependabotのPRが作成されていたので、それを利用しました🤖
※bundle update --conservative
を使って最低限のgemだけあげた方が安全。
--conservative Use bundle install conservative update behavior and do not allow indirect dependencies to be updated. https://bundler.io/v2.4/man/bundle-update.1.html
設定周りをRails v7.1に合わせて更新
config.load_defaults 7.1
に更新してRails 7.1の設定を反映するようにしたのと、
Rails v7.1時のRails newのdiffを確認し以下の変更を追加した。
https://railsdiff.org/7.0.8/7.1.0
config.autoload_lib
のignoreオプションを利用するように修正
config.autoload_lib(ignore:)という新しい設定メソッドが導入されました。 このメソッドは、デフォルトでは自動読み込みパスに含まれていないlibディレクトリをアプリケーションの自動読み込みパスに追加するために利用されます。 また、新しいアプリケーションではconfig.autoload_lib(ignore: %w(assets tasks))が生成されます。 https://railsguides.jp/v7.1/7_1_release_notes.html
config.cache_classes
をconfig.enable_reloading
に変更
3.2.13 config.cache_classes 後方互換性のためにサポートされている古い設定であり、!config.enable_reloadingと同等です。 https://railsguides.jp/configuring.html
config.action_controller.raise_on_missing_callback_actions
をtrueに設定
onlyやunlessで既存のメソッドに存在しないシンボルを指定した場合にコールバックでエラーを発生するようになった。 https://techracho.bpsinc.jp/hachi8833/2023_09_27/135156
config.active_job.verbose_enqueue_logs
をtrueに設定
3.15.8 config.active_job.verbose_enqueue_logs バックグラウンドジョブをエンキューするメソッドのソースコードの場所を、 関連するエンキューログ行の下にログ出力するかどうかを指定します。 デフォルトは、development環境ではtrue、それ以外の環境ではfalseです。 https://railsguides.jp/configuring.html
config.action_dispatch.show_exceptions
を:rescuable
に設定
Deprecate
true
andfalse
values forconfig.action_dispatch.show_exceptions
in favor of:all
,:rescuable
, or:none
. https://edgeguides.rubyonrails.org/7_1_release_notes.html#action-pack-deprecations
警告が出ている部分のFIX
アプリケーション起動時に以下のような警告が出ていましたが、どちらもDevise起因ぽかったので一旦無視しました。
DEPRECATION WARNING: DeprecatedConstantAccessor.deprecate_constant without a deprecator is deprecated (called from <top (required)> at /app/config/application.rb:16) DEPRECATION WARNING: `Rails.application.secrets` is deprecated in favor of `Rails.application.credentials` and will be removed in Rails 7.2. (called from <top (required)> at /app/config/environment.rb:7)
DeprecatedConstantAccessor.deprecate_constant
側はissueが上がっている模様。
※DEPRECATION WARNING
の調査はconfig.active_support.deprecation = :raise
にするとスタックトレースが出るので発生箇所が調査しやすい。
おわりに
Rails v7.1はasync queriesや複数主キーのサポートなどいい感じの機能が楽しみですね✨