sugiii8's tech blog.
post: 2023-07-06
INDEX

Ruby3アップグレード時のエラー

thumbnail

業務で開発・運用保守を行っていたRailsアプリケーションを、
Ruby2.3 → Ruby2.7 → Ruby3.1と段階的にアップグレードしたことがあり

2回目のアップグレード (Ruby2.7 → Ruby3.1)をした際に発生したことを纏めておこうと思いました。
執筆時点で結構前の話になってしまっているので思い出しながら書きます。

ただし、1回目のRuby2.3 → Ruby2.7の際に色々対応していたお陰で問題が発生しまくるという事態にはならなかったです。
本番で起こしてしまった問題は2点です。

キーワード引数

Ruby 3.0における位置引数とキーワード引数の分離について
これの対応が漏れていて、実行時エラーが発生しました。
原因としては以下が考えられる。


そもそもテストケースが足りなかった

エラーになったメソッドは、何か改修時に後からキーワード引数を追加していた。
本来ならその時点(改修時点ではRuby2.7の状態)でそのパラメータを入れたテストケースが追加されているべきだった。
そうすればアップグレード時にテストが落ちて検知できたはず。

コンソールの警告に対応してなかった

Ruby2.7時点で警告が出ていて、その時点で対応しておくべきだった。

静的解析できなかった

問題発生してから調べたが、自分の調べた範囲ではエディタ上で検知できるツールなどは無さそうだった。
同じ問題があるかを調べるのにgrepした記憶がある。

Openメソッドでエラーになる

open-uriをrequireしても、openメソッドではURLが開けなくなった
こちらも同じく実行時エラーとして気づいた

Ruby3になった際の破壊的変更点チェック漏れ

キーワード引数についてもそうだが、公式やそれに近い記事などをよく確認しておきべきだった。
自分で書いたテストコードが通ってそれで満足してしまった。


以上2点が発生していたなと、ふと思い出して備忘録として残しておくことにしました。