🆙
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_helper
を helper
に書き換える
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::FileFixtures
を rails_helper.rb
へ追記することで修正可能。だが今回はよりシンプルに
Rack::Test::UploadedFile
を代わりに使うようにすることで修正した。Before
Ruby
After
Ruby
以上!
そんなに大きなアプリでもないのでそんなに難しくなくバージョンを上げられてよかった。