🆙

Rails v6.0.4.7 to v7.0.2.3

書いた日
2022/3/31
タグ
技術
Railsをv6.0.4.7からv7.0.2.3へアップデートする仕事をしました。
バージョンを一気にあげたのでどの対応がどのバージョンの変更によるものなのかはちょっとわかっていないけど対応したものを書いておきます。

やったこと

activerecord-multi-tenantをmasterを参照するようにする

New release?
Updated Apr 11, 2022
Rails v7に対応した変更が入ったバージョンがまだリリースされていなかったのでmasterに向けた。

リダイレクトをしている箇所に allow_other_host: true を指定する

対象のサービスはマルチテナントアプリでテナントをサブドメインで判別しているアプリなので別のホスト(別のサブドメイン)へリダイレクトする処理が結構あった。
Rails v7に上げると別のホストへのリダイレクト処理は例外が発生するようになっていたので別ホストへリダイレクトしている箇所は全て allow_other_host: true を指定するようにすることで対応した。

Time.zone.tzinfo.ical_timezone(args) のBreaking Changes対応

Railsのアップデートと同時にtzinfo gemもアップデートされたのでBreaking Changeがあり、timezoneの取得が変わった。
Before
Ruby
After
Ruby

ActiveRecord::Associations::Preloader#preload のBreaking Changes対応

N+1を潰すためにActiveRecord::Associations::Preloader#preload を使用している箇所があるがBreaking Changeがあったので以下のように書き換えた。
Before
Ruby
After
Ruby

ActiveModel::Errors のBreaking Changes対応

ActiveModelのエラーを扱うところを以下のように書き換えた。
Before
Ruby
After
Ruby

add_template_helperhelper に書き換える

add_template_helper はdeprecatedになっており今回methodが削除されたので全て helper に書き換えた。
Before
Ruby
After
Ruby

render(partial: ...) のファイル指定を変えた

どこの変更が影響してかはわかっていないんだけど今までのファイル指定だとファイルが見つからないと怒られるようになったのでファイル指定を少し変えた。
ちなみに該当ファイルは layouts/current_user_context.json.jb というファイル名。
Before
Ruby
After
Ruby

config.action_view.raise_on_missing_translations のBreaking Change対応

指定の仕方が変わったので書き換えた。
Before
Ruby
After
Ruby

bin/rails active_storage:update の実行

ActiveStorageのアップデートにはDBのmigrationが必要で、このコマンドを実行するとアップデートに必要なmigrationファイルを生成してくれる。

ActiveJob::Logging::LogSubscriber のBreaking Change対応

モジュールのネームスペースが変更になったので以下のように書き換えが必要だった。
Before
Ruby
After
Ruby

fixture_file_upload にエラーが発生するようになったので Rack::Test::UploadedFile を使うようにする

fixture_file_upload 実行時に以下のエラーが発生するようになった。
Ruby
このエラー自体は以下の記事の通り include ActiveSupport::Testing::FileFixturesrails_helper.rb へ追記することで修正可能。
だが今回はよりシンプルに Rack::Test::UploadedFile を代わりに使うようにすることで修正した。
Before
Ruby
After
Ruby

以上!

そんなに大きなアプリでもないのでそんなに難しくなくバージョンを上げられてよかった。