この変更が意味すること
Rails v8.1.3 がリリースされました。先日の v8.1.2.1(CVE 6件のセキュリティパッチ)に続く、バグ修正中心のリリースです。同時に v8.0.5 もリリースされています。
Active Support の JSON シリアライズにおけるカスタムオブジェクトキーの修正や、重複する頭字語(acronym)のインフレクション改善など、地味ながら実用上重要な修正が含まれています。Ruby 4.0 対応の delegator 警告修正も注目ポイントです。
主な変更点
Active Support: JSONGemCoderEncoder のカスタムオブジェクトキー修正
Hash のキーがカスタムオブジェクトで、その as_json が Hash を返す場合のシリアライズが修正されました。修正前は as_json の結果に対して to_s が呼ばれていましたが、修正後はオリジナルのキーオブジェクトに対して to_s が呼ばれるようになりました。
# Before
hash = {CustomKey.new(123) => "value"}
hash.to_json # => {"{:id=>123}":"value"}
# After
hash.to_json # => {"custom_123":"value"}
Active Support: 重複する頭字語のインフレクション改善
USD と USDC のように一方が他方を含む acronym を登録した場合に、underscore メソッドが正しく動作するようになりました。
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym "USD"
inflect.acronym "USDC"
end
"USDC".underscore # => "usdc"
Active Support: Dalli 4.0+ 警告の抑制
ActiveSupport::Cache::MemCacheStore 使用時に Dalli 4.0 以降で表示されていた警告が抑制されました。Memcached を利用している環境でのログがクリーンになります。
Active Model: Ruby 4.0 delegator 警告修正
attributes の inspect 呼び出し時に Ruby 4.0 で発生する delegator 警告が修正されました。Ruby 4.0 への対応が着実に進んでいます。
Active Model: デシリアライズ時の NoMethodError 修正
デシリアライズ処理で NoMethodError が発生する問題が修正されました。
EOL / サポート状況
| サイクル | 最新バージョン | サポート終了 | EOL |
|---|---|---|---|
| 8.1 | 8.1.3 | 2026-10-10 | 2027-10-10 |
| 8.0 | 8.0.5 | 2026-05-07 | 2026-11-07 |
| 7.2 | 7.2.3.1 | 2025-08-09 (終了) | 2026-08-09 |
| 7.1 | 7.1.6 | 2024-10-01 (終了) | 2025-10-01 (EOL済) |
Rails 8.1 は2027年10月までサポートされる最新のアクティブバージョンです。Rails 7.1 以前は既に EOL のため、8.0 以降へのアップグレードを推奨します。
開発者への影響
- カスタムオブジェクトを Hash キーに使い JSON シリアライズしている方: シリアライズ結果が意図通りになるよう修正されています。既存の挙動に依存している場合は確認が必要です
- 重複する acronym を登録している方:
underscoreの結果が正しくなります - Memcached(Dalli 4.0+)を利用している方: 不要な警告ログが出なくなります
- Ruby 4.0 への移行を進めている方: delegator 警告が解消されます
- v8.1.2.1 ユーザー全般: バグ修正リリースのため、安心してアップデートできます
アップデート方法
# Bundler
bundle update rails
# Gemfile で指定
gem 'rails', '~> 8.1.3'
データソース: GitHub Releases API, endoflife.date AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
