2025年3月12日、Ruby on Railsの最新バージョンである Rails 8.0.2 がリリースされました。
今回のアップデートでは、主にActive Supportを中心に複数の重要な修正と改善が行われています。
この記事では、Rails 8.0.2の主な変更点をコード例とともに詳しく解説します。
Rails 8.0.2の主な変更点と修正内容
to_time_preserves_timezoneの設定に関する修正
new_framework_defaults_8_0.rbにおけるto_time_preserves_timezoneの設定に関する問題が修正されました。
これにより、タイムゾーンの扱いがより正確になります。
Active Support Cacheのfetch_multiメソッドの修正
ローカルキャッシュが有効な場合、fetch_multiメソッドが欠落したエントリに対して適切にブロックを呼び出すよう修正されました。
cache.fetch_multi("key1", "key2") do |key|
# 欠落したエントリに対してブロックが正しく呼び出される
end重大な例外の報告機能の改善
SystemStackErrorやNoMemoryErrorなどの重大な例外も、Railsのエラーレポーターが適切に報告できるよう改善されました。
RedisCacheStoreとMemCacheStoreの接続プールエラー処理の改善
RedisCacheStoreおよびMemCacheStoreで発生する接続プール関連のエラーが、Rails.errorに正しく報告されるようになりました。
read_multiメソッドのバージョン有効期限の尊重
ローカルキャッシュを使用する際、ActiveSupport::Cache#read_multiがバージョンの有効期限を正しく尊重するよう修正されました。
MessageVerifierとMessageEncryptorのon_rotationコールバックの修正
ActiveSupport::MessageVerifierおよびActiveSupport::MessageEncryptorのon_rotationコールバックがドキュメント通りに動作するよう修正されました。
verifier = ActiveSupport::MessageVerifier.new(secret)
verifier.rotate(old_secret).on_rotation do |message, key|
# コールバックが正しく呼び出されるようになった
endMessageVerifierのURLセーフ・アンセーフなペイロード検証の改善
URLセーフおよびURLアンセーフなペイロードの両方を検証できるようになり、以前に生成された署名付きメッセージを無効にすることなくシームレスな移行が可能になりました。
キャッシュのfetchメソッドでの有効期限の修正
:race_condition_ttlオプションを使用した場合でも、指定した有効期限が正しく尊重されるよう修正されました。
cache.fetch("key", expires_in: 1.hour, race_condition_ttl: 5.seconds) do
"value"
end
# TTLが正しく1時間に設定されるようになったset_callbackでのスプラット引数を持つブロックの処理改善
スプラット引数を持つブロックをset_callbackで適切に処理できるよう改善されました。
String#mb_charsメソッドの修正
String#mb_charsがレシーバーを変更せず、force_encodingを呼び出す前にレシーバーを複製するよう修正されました。
ErrorSubscriberの改善(ビューエラーの二重報告防止)
エラーの原因も報告済みとしてマークするよう改善され、特にビューでのエラーが二重に報告される問題が解消されました。
Module#module_parent_nameの修正(無名モジュールの親名取得)
無名モジュールが後で定数に割り当てられた場合、正しい親モジュール名を返すよう修正されました。
mod = Module.new
mod.module_parent_name # => "Object"
MyModule::Something = mod
mod.module_parent_name # => "MyModule"(修正後は正しく親名を返す)Rails 8.0.2へのアップデート方法
Rails 8.0系を利用中の場合、GemfileのRailsバージョンを以下のように指定してアップデートできます。
gem "rails", "~> 8.0.2"その後、以下のコマンドを実行します。
bundle update railsまとめ
Rails 8.0.2では、Active Supportを中心に多くの重要な修正が行われ、安定性とパフォーマンスが向上しています。
Railsアプリケーションを運用している方は、早めのアップデートを検討しましょう。



