2020/12/25にRuby 3.0.0がリリースされました🎄🎅🎁✨
Ruby on Rails(6.1.1)製の個人のWebサービスを今更ながらRuby 3.0にアップデートしました。
update後に一部CI等が落ちて対応した点があったので対応したことをMEMOしておきます📝
対応したこと
非推奨だったキーワード引数が動かなくなったので**
で展開して渡すように
キーワード引数が通常の引数から分離されました。 原則として、2.7 で警告の出ていたコードは動かなくなります。詳細は別ドキュメントを参照してください。
# before @feeds = Feed.preload(:last_entry, :tags).search(search_params).recent # after @feeds = Feed.preload(:last_entry, :tags).search(**search_params).recent
2.7
に上げたときの対応漏れがあり、3.0.0
で動かなくなるキーワード引数の挙動を使った実装が残っていたので対応しました。
対応方法はRubyの公式のドキュメントが出ていて、
Here is the most typical case. You can use double splat operator (**) to pass keywords instead of a Hash.
今回は上記の通り典型的なケースだったので**
を付与し展開して渡すようにしました。
標準添付ライブラリからbundled gemに変更になったのでGemfileに追加
Rssを読み込むような機能でRubyの標準添付ライブラリだったrss
を利用していたのですが、
以下のライブラリが新たに bundled gems になりました。Bundler から利用する場合は Gemfile に明示的に指定してください。
rexml
rss
上記の通り、bundled gem
に変更されGemfileに明示的に指定する必要があり、Gemfileに追記する対応をしました。
# Gemfile gem 'rss' # add
また以下はbundled gemにならず標準添付ライブラリから削除されているので、同様にGemfileに追記したinstallするような対応が必要そうです。
以下のライブラリは標準添付ライブラリから削除されました。3.0 以降で使いたい場合は rubygems から利用してください。
sdbm
webrick
net-telnet
xmlrpc
ちなみにbundled gemとかdefault gemとかの話は以下がわかりやすかったです💎
おわりに
Rubyのメジャーアップデートということでしたが、個人の規模が小さいアプリケーションということもあり、そこまでハマるようなこともなくバージョンが挙げられました🙏✨
Ruby 3.0はrbs
を始めとした静的型付け系の機能が入っていたり、パフォーマンス向上 etc...様々な改善がされているなか、利用者がスムーズにアップデートできるというのは非常にありがたいですね🙇♂️