重い腰を上げた
プラットフォームの期限切れも近づいており、そろそろRuby2.7→3.2にあげないといけないタイミングになった。
コケたところを備忘録として残す。
アップデート内容
ruby '2.7.6' → '3.2.2'
rails '6.0.3' → '~> 6.1'
起きた問題一覧
Macで Ruby 3.2.2 のダウンロードができない
$ bundle install
rbenv: version `3.2.2' is not installed
$ rbenv install 3.2.2
BUILD FAILED (macOS 14.4.1 on x86_64 using ruby-build 20240727)
下記の記事を元に3.2.2のインストール完了(感謝)
bundle update 時の依存関係エラー
nio4rエラー
$ bundle update
nio4r
An error occurred while installing nio4r (2.5.8), and Bundler cannot continue.
Make sure that `gem install nio4r -v '2.5.8' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
impressionist was resolved to 2.0.0, which depends on
rails was resolved to 6.0.6, which depends on
actioncable was resolved to 6.0.6, which depends on
nio4r
nio4rで失敗
nio4r はaction cableでwebsoketのリアルタイム通信を行うためのもの
現在のプロダクトでは使用しないので削除してよさそう
→削除
json gemでエラー
json gemと依存関係のsdocのgemをアップデート
gem 'json', '~> 2.2'
gem 'sdoc', '~> 1.0', group: :doc
Psychのエラー
Alias parsing was not enabled. To enable it, pass `aliases: true` to `Psych::load` or `Psych::safe_load`. (Psych::AliasesNotEnabled)
https://github.com/sidekiq/sidekiq/issues/5140
gem 'psych', '<4'
4未満にして対処療法
yarn しようとすると node-sass でエラーになる
package.jsonの"@rails/webpacker"をアップデート
"@rails/webpacker": "5.4.3"
session_store の書き方が変更になっている
session_store': wrong number of arguments (given 2, expected 0..1) (ArgumentError)
上記で解消(感謝)
SQLを直記入している箇所で多々UnknownAttributeReferenceが起きる
ユーザーからの入力値を直接SQLに設定しない場合は、Arel.sql()でラップすることで避けることが可能
影響範囲が大きいので以下でこの設定を無効にしようとしたが、なぜか設定が効いてくれないので 一つ一つ確認して Arel.sql() でラップ...
# Rails 6.1 以降、安全性向上のために安全でない生のSQLクエリの実行箇所でエラーが起きるようになった
# allowしてあげることで今までと同じクエリで動作させる(本当はよくないが影響箇所が大きすぎるのでやむなし...)
Rails.application.config.active_record.allow_unsafe_raw_sql = true
該当箇所を全てチェックしラップ
影響範囲が大きいのでここは慎重に。大変だった。
letter_opnerでメールが開けなくなっている
gemバージョンをアップデート それでも開けない
gem 'letter_opener', '~> 1.10'
gem 'letter_opener_web', '~> 2.0'
add_template_helper が rails 6.1 で廃止になって送信できなくなっていた
下記にて解消
# old
add_template_helper(ApplicationHelper)
add_template_helper(FormHelper)
# new
helper(ApplicationHelper)
helper(FormHelper)
ブロックスコープの問題
Magick::Image.new(width, height){self.background_color = color}
こういう書き方はダメ
NoMethodError: undefined method `background_color=' for Magick::Image:Class
ブロック外でオブジェクトのプロパティを設定する方法に変更
image = Magick::Image.new(width, height)
image.background_color = color
該当箇所を全てチェックし対応
影響範囲が大きいのでここは慎重に。大変だった。
キーワード引数にハッシュを渡している部分が動かなくなる
wrong number of arguments
(感謝)
ハッシュを展開して渡すように修正
該当箇所を全てチェックし対応
影響範囲が大きいのでここは慎重に。大変だった。