post: 2022-01-07
update: 2023-01-06
INDEX ▶
Ruby3.0のRailsアプリケーションをを3.1にアップグレードにした際に出たエラーの対応
Rails6, Ruby3.0で作ったアプリケーションをRuby3.1にアップグレードした際に詰まった点をメモしておく。
ちなみにこの作業は後々Rails7にアップグレードするための前準備として行っていました。
事前にやったこと
- bundle update
- yarn upgrade
- 一応Rspec通るか確認しておく
このあたりは個人で開発してるものなので雑に全部アップグレードした
作業
Ruby3.1に上げる
- .ruby-version
- Gemfile
bundlerのバージョン違い問題
上記でbundle installを行うと成功はするが、bundlerのバージョンが異なる旨の警告が出た
そのためGemfile.lockを削除した上でbundle installした
Unknown alias: default
上記エラーがでた
YAMLパーサーのバージョンが上がったことが原因のよう。
回避策としてGemfileでバージョンをしてインストールする。
gem "psych", "~> 3.1"
LoadError: cannot load such file
なにやらメール周りのライブラリが外されている模様?
- LoadError: cannot load such file -- net/smtp
- LoadError: cannot load such file -- net/pop
- LoadError: cannot load such file -- net/imap
https://github.com/mikel/mail/pull/1439
https://github.com/rails/rails/pull/42366
とりあえず素直に追加していく。
gem "net-smtp", require: false
gem "net-pop", require: false
gem "net-imap", require: false
herokuにpushした際のエラー
Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
is x86_64-linux. Add the current platform to the lockfile with `bundle lock
--add-platform x86_64-linux` and try again.
Bundler Output: Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
is x86_64-linux. Add the current platform to the lockfile with `bundle lock
--add-platform x86_64-linux` and try again.
これはbundlerを上げたことによる影響らしい。
【Rails】Bundler 2.2.x以降は開発者が適切なプラットフォームを追加する必要がある
現状だとローカルのapple用のプラットフォームしか指定していなかった。
heorkuに出てるエラーの通りにプラットフォームを追加する。
bundle lock --add-platform x86_64-linux
Gemfile.lockに下記が追加される
PLATFORMS
x86_64-darwin-20
x86_64-linux # これ
これで完了!