Rails 7.0の非互換
自分が引っかかったところをまとめた。一般的な変更点はリリースノートを参照
renderのテンプレート名にドットを含められなくなる
テンプレート名で拡張子を指定するのではなく、renderメソッドの引数でformatsを指定するとよい
ActiveModel::Errors#keysが削除される
かわりにattribute_namesを使う
Integer#to_s(:delimited)など、to_sにフォーマットを渡すのが非推奨になる
Ruby 3.1でのto_sのパフォーマンス改善の恩恵を受けられるようにするため
かわりにto_formatted_s/to_fsを使う
sprockets-railsへの依存が削除される
使っているなら明示的にGemfileに追加する
code:ruby
gem 'sprockets-rails', require: 'sprockets/railtie'
アプリケーション起動時(config/initializersなど)において、mainオートローダが管理している自動読み込みパスからの自動読み込みができなくなる
initializersにおいて再読み込み可能なクラスにアクセスしているなら、Rails.application.config.to_prepareブロックで囲み、再読み込み時にも実行されるようにする
プリフライトチェックなど、起動時にのみ実行したいコードであればRails.application.config.after_initializeで囲む
ミドルウェアなどの再読み込み可能にできないクラスは、自動読み込みパスに属さないディレクトリに置いて、requireして使う
もしくはconfig.autoload_once_pathsを使って、自動読み込みするが再読み込みはしないコードの保存場所を定義し、そこに置く
Settingslogicで定義した設定値クラスを自動読み込みパスに置いていて、initializersでその設定値を利用して初期化処理をしている、という状況で発生した