amazon

[Ruby]Ruby 2.7 -> 3.1.2 に上げたときのエラーの修正方法

はじめに

Gem の依存関係で Ruby 2.7 から上げれていませんでしたが、依存関係がなくなったので上げてみましたが、いろいろエラーが出てきたため忘備録として記載します。

発生したエラーと対応

cannot load such file — matrix (LoadError)

/usr/local/lib/ruby/gems/3.1.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- matrix (LoadError)

Ruby 3.1[1] でデフォルト Gem に追加されているので Gemfile に 「matrix」に追加が必要です。

Supply a keyword argument ‘to’

delegate': Delegation needs a target. Supply a keyword argument 'to' (e.g. delegate :hello, to: :greeter). (ArgumentError)

draper のGem を更新すれば解決しました。

cannot load such file — binding_of_caller.so (LoadError)

/usr/local/lib/ruby/gems/3.1.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- binding_of_caller.so (LoadError)

binding_of_caller を更新したら解決しました。

Unknown alias: default (Psych::BadAlias)

調査した[2]ところ、 Psych の v3 と v4 で yml の解析方法が変更したため、認識されないケースがあるそうです。一旦 v3 系を使うようにしてから後程 v4 形式に変更する予定です。

cannot load such file — net/smtp

/usr/local/lib/ruby/gems/3.1.0/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require': cannot load such file -- net/smtp

Ruby 3.1[1] でデフォルト Gem に追加されているので Gemfile に 「net-smtp」に追加が必要です

おわりに

ひとまず上記のエラーつぶしていけばコンソール動かすまではいけました。
まだまだ rspec の失敗とかいろいろ問題がありますがこれは次のタイミングで記載します。

後続のエラー対応は「ruby 3.1 にバージョンアップ時の Unknown alias: default (Psych::BadAlias) 対応」を参照ください。

参考

[1] Ruby 3.1.0 Released, https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/
[2] Psych::BadAlias: Unknown alias: defaultというエラーの対処法, https://qiita.com/Bjp8kHYYPFq8MrI/items/90a9db03160f8d6f7e5c#%E8%A7%A3%E6%B1%BA%E7%AD%96

コメント

タイトルとURLをコピーしました