入社して最初のころにやったのがRuby 2.6系で動いているRuby on Railsのサービスを2.7.2まで上げる仕事だった。 機能開発に入れるほど慣れてなくて、チームにがっつり入るより独立して動いた方がいい、かつ、サービス全体を見渡すのにちょうど良い感じのタスクということでやらせてもらった。
だいたいの方法はGitHubの記事を見てもらうのが一番いいのだけれど、ここからの差分としては2.7.2から非推奨警告がデフォルトでは出なくなったという点。
config/environments/test.rb
か RSpec を使っているなら spec/spec_helper.rb
辺りに以下のように書いてくと良い。
CIでだけ動かすか迷ったけど他のメンバーにも警告出てるのを気にしてほしいのでテスト実行すると常に出るようにした
Warning[:deprecated] = true
これで非推奨の警告が出るようになったので、CIでテストを実行したときに警告を集めて成果物として保存しておくと警告の一覧が見られるようになる。 あとはひたすら警告と向き合って潰して行く作業になる。
基本的にはキーワード引数と URI.escape
/ URI.unescape
の非推奨警告と戦うことになる。
これらは実は非推奨の段階なので本当はほっておいてもいいのだけれど、3.0に行くにはこのタイミングで消しておけるとお得である。
キーワード引数については機械的に置き換えていくだけなので数は多いかもしれないけど比較的まし。
URI.(escape|unescape)
については完全に同じ機能を提供するメソッドは存在しないので、何がしたかったのかを読み解いて置き換えて行く必要があるのでけっこう頭を使った。
一部、社内管理のGemで意図がつかめなかったところは放置してしまった。
これらは3.0にいくときには対応が必要なので問題を先送りしただけではある。
あとは使っているGemが2.7対応されているかをひたすら見ていって安心感を得る作業という感じだった。
次はRuby 3.0 / Rails 6.1対応が待っていて、こちらの方が大変そう。
2.7系のリリース一覧
追記
これを書いた1分後くらいに2.7.3が出た。