【定期配信】最新のRuby & Railsへのバージョンアップ時の注意点 (~ 2021-11-21)

7 minute read

Ruby と Rails を安定して使い続けるために 最新の Ruby と Rails に対して行われた変更がバージョンアップするときに問題になるかどうか という観点で情報をまとめています。

情報が多いので時間がない人は Rubyの仕様変更の一覧Railsの仕様変更の一覧 を見てください。

Ruby の最新情報は nagachikaさん (@nagachika) / Twitterruby trunk changes で公開してくださっています。

Rails の最新情報は Pull requests · rails/rails でマージされた PR を確認できるのと、y-yagiさん (@y_yagi) / Twitterなるようになるブログ で公開してくださっています。

これらは大変有益な情報です。本当にありがたいことです。

Google広告


Ruby

Rubyの仕様変更の一覧

ruby 3.1.x

  • Dir.globの第2引数
  • Module#{public,private,protected,module_function} の戻り値
  • GC.statの戻り値

以下、変更点の詳細です。

ruby trunk

ruby-trunk-changes 2021-11-19 - ruby trunk changes

Expect bool as sort: option at glob [Feature #18287] · ruby/ruby@89b440b

【仕様変更】
Dir.globの第2引数にnilを渡すと ArgumentError が発生するようになりました。修正前は nil だとデフォルト値の true 扱いだったため、nil = false だと思っていたら挙動が違って紛らわしかったようです。

また、コミットまでのやりとりがよくなかったようで、修正を横取りしてしまったような感じになっています。 OSS ではよくあることなのですが、個人的な感想としては開発者が楽しくなることが Ruby のモットーだと思いますので、こういったところも考慮していければいいなと思います。Good First Issue 的な感じだったのかな。とはいえ、リリースも近いし、 nobu に任せておけば安心感がありますし…難しい問題ですね。

Refactor getclassvariable (#5137) · ruby/ruby@ec574ab

OK: クラス変数参照のパフォーマンスチューニング。最高です!

Make Module#{public,private,protected,module_function} return arguments · ruby/ruby@75ecbda

【仕様変更】
Module#{public,private,protected,module_function} の戻り値が変わっています。詳しくは nagachika さんのコメントを参照してください。それらの戻り値を使っているところは要チェック!

Anonymous block forwarding allows a method to forward a passed · ruby/ruby@4adb012

OK: 機能追加

def foo(&)
  bar(&)
end

これはおもしろい!無名のブロックとして & を指定できるようになりました。

support GC.stat(:time) take 2 · ruby/ruby@349a179

【仕様変更】
GC.stat の戻り値のハッシュに time: GC にかかったトータルの時間 が追加されています。アプリケーションではまずないと思いますが、いちおう、GC.statの戻り値を使っている処理は要チェック!

ruby-trunk-changes 2021-11-20 - ruby trunk changes

OK

ruby-trunk-changes 2021-11-21 - ruby trunk changes

OK

ruby 3.0

変更なし。

ruby 2.7

変更なし。

ruby 2.6

変更なし。

Google広告


Rails

Railsの仕様変更の一覧

rails 7.0.x

  • ActionView
    • form_for
  • ActiveRecord::Base.filter_attributes に指定した属性に関するSQLのログ

以下、変更点の詳細です。

Pull requests

Pull requests · rails/rails 2021-11-19

日本語の解説: rails commit log流し読み(2021/11/19) - なるようになるブログ

ActiveSupport, fix more race conditions on test/cache - part II by esparta · Pull Request #43675 · rails/rails

OK: test

これもすごいな〜。レースコンディションによるテストの失敗に対応するのは大変なのですよね。

Rails standardized error reporting interface by casperisfine · Pull Request #43625 · rails/rails

OK: 機能追加

新しく追加される標準のエラー処理の仕組みです。設定によってエラーメッセージをどのサービスに送るのかを変更できるようです。これ使うのが楽しみです!

Implement form_for by delegating to form_with by seanpdoyle · Pull Request #43421 · rails/rails

【仕様変更】
具体的にどこが変わったのかは確認できていませんが、 form_for が内部で form_with を呼び出すようになりました。コーナーケースで生成する HTML が変わる可能性が十分にあるため form_for を使っている箇所は要チェック!

Makes the array syntax consistent with other use cases by sandip-mane · Pull Request #43045 · rails/rails

OK: リファクタリング

Filter attributes in SQL logs by aishbuilds · Pull Request #42006 · rails/rails

【仕様変更】
SQLのログにおいても、 ActiveRecord::Base.filter_attributes に指定した属性をフィルターするようにしています。ありがたい修正。でもログとはいえ仕様がかわるので要チェック!

Pull requests · rails/rails 2021-11-20

日本語の解説: rails commit log流し読み(2021/11/20) - なるようになるブログ

Fix typo in docs by jacobherrington · Pull Request #43679 · rails/rails

OK: doc

Pull requests · rails/rails 2021-11-21

日本語の解説: rails commit log流し読み(2021/11/21) - なるようになるブログ

PRなし

Google広告


タグ: ,

カテゴリー:

更新日時: