https://github.com/rails/rails
ActionCable の Redis アダプタで `id: nil` が上書きされるバグを修正し、`config[:id]` のキー有無でデフォルト設定を行うよう変更しました。テストも `client.id` を確認するよう更新し、プロキシ環境での名前付け委任が可能になりました。
Redis 接続切断時にクリアされていたサブスクライブコールバックを保持し、再接続後も保留中の確認が配信されるように `reset` から `@subscribe_callbacks.clear` を削除した修正です。
ActionCable のサブスクリプションで channel が欠如した identifier が NoMethodError を起こす問題を、safe navigation演算子で guard し ChannelNotFound を統一的にスローするよう修正し、テストで検証しました。
ActionCable の restart で残っていたハートビートタイマーを他リソース同様に停止・クリアし、開発リロード時のスレッドプールリークを防止したバグ修正です。
Redis のサブスクリプション数が 0 になるとリスナースレッドが停止する問題を、内部チャンネル `_action_cable_internal` への恒久的サブスクライブで防ぎ、リスナーの死活を保証した。
assert_* 系列が静的値を受け取った際に ArgumentError を投げるようバリデーションを追加し、テストの偽陽性を防止した変更です。
`excluding` が複合主キーを持つモデルでも正しく動作するようになり、例外が解消された。実装は `build_where_clause` に置き換える最小差分で、既存APIは保持された。
Hash.from_xml が type="date" の空白付与値で Date::Error を投げていた問題を、日付パーサーで to_s.strip を適用するだけのシンプルな修正で解消し、型キャストの一貫性と後方互換性を確保した。
PostgreSQL の FATAL エラーを正確に捕捉し ConnectionFailed に変換するため、@needs_reconnect フラグと低レベル libpq 呼び出しを導入し、接続切断の検知と再接続を強化しました。
MemoryStore の cleanup がシリアライザ非依存に修正され、非デフォルトシリアライズでも例外が発生せず期限切れエントリが正しく削除されます。
`Time#advance` と `DateTime#advance` が受け取ったオプションハッシュをコピーして処理するように変更し、呼び出し元のハッシュが変化せず凍結ハッシュでも安全に利用できるようになった。
RedisCacheStoreTests で抑制された RedisClient エラーを再スローするように lookup_store に error_handler を追加し、テスト失敗時に原因が直接表示されるようにした変更です。
`increment!` と `decrement!` が query_constraints をすべて含む WHERE 句でカウンタ更新されるよう修正し、制約付きモデルのデータ整合性を確保した。
ActiveRecord の `_attr_readonly` が `ActiveSupport::Ractors.make_shareable` で共有可能化され、Ractor 環境で安全に使用できるようになり、テスト支援も追加された。
`String#truncate` が `:separator` と `:omission` が長すぎると文字列全体を返すバグを、余白が無い場合は即座に `omission` を返す一行ガードで修正し、テストで挙動を保証しました。
Action Pack の定数ラムダを shareable_lambda でラップし、Ractor 環境でも安全に共有できるようにした変更です。機能は変わらず、互換性とマルチスレッド安全性が向上します。
Rails に Ractor 安全化用のプロック共有機構が追加され、`ActiveSupport::Ractors.try_shareable_proc` が三モードで動作し、RouteSet でも利用されます。デフォルトは無効で、既存アプリへの影響を最小化しつつ安全化を段階的に導入可能です。
Composite Primary Key の分散ロジックを新規の ActiveRecord::Key クラスへ集約し、条件分岐を削減して可読性と拡張性を向上させたリファクタリングです。
CurrentAttributes の属性名衝突を動的に検出し、禁止名リストを自動生成することで、属性宣言時に ArgumentError を投げ安全性を向上させた変更です。
`normalizes` のインプレース変更検出が生の DB 値を正しくデシリアライズできず例外が発生していた問題を、`attribute.type_cast` への置き換えで修正。既存型システムを活用した最小限の変更で後方互換性を保ち、JSON カラムのテストも追加された。