https://github.com/rails/rails
ActiveSupport::Duration の未テストエッジケースを網羅するテストが追加され、仕様の整合性と将来の回帰防止が強化されました。
Action Pack の複数定数を freeze し、Ractor 環境で安全に共有できるようにした変更です。既存の振る舞いは変わらず、ミューテーションリスクを排除しています。
Action Pack の cookies_test.rb で重複した env 参照とクッキー取得をヘルパーメソッドに置き換え、テストの可読性と保守性を向上させたリファクタリングです。
Reload時に `all_queries` デフォルトスコープが current_scope に漏れるバグを、`all` から `default_scoped` への切り替えで修正。テスト追加により正しいクエリ生成が確認され、既存コードへの影響はありません。
ActiveRecord’s `delete` method now supports single composite primary keys by wrapping the ID in an array, matching the behavior of `destroy` and fixing a documented inconsistency.
ActiveRecord の attributes_builder が複合主キーを除外していたバグを `Array(primary_key)` で修正し、部分的 select 後の主キー取得が例外から nil に統一された。
Composite Primary Key のモデルで `find([])` が例外を投げていたバグを修正し、空配列を返すようにした。判定ロジックと早期リターンを追加し、テストで動作を保証した。
LoggerThreadSafeLevel のコピー時にキーを再生成し、ロガーの clone/dup が互いに干渉しない独立したスレッドセーフレベルを持つように修正しました。
ActiveModel::Type::Date#cast の未テスト分岐を網羅するテストを追加し、全ケースの挙動を保証することで回帰リスクを低減しました。
Formatter に freeze が追加され、凍結状態でも tag_stack が評価されることで Ractor 共有が可能になり、テストで動作が保証された。
`Cache::Store#delete_multi` が配列を破壊的に変更していた問題を非破壊的な `map` に置き換え、全マルチキー操作で一貫した振る舞いを実現した。
未保存レコードのバリデーションで正規化が毎回走っていた問題を、属性の実際のインプレース変化のみで再実行する判定に変更し、速度向上と冪等性の維持を実現した。
`test_default_order` から順序未保証のベースラインアサーションを削除し、テストのフレーキーを解消。実装変更はなく、テストコードの整理だけで信頼性を向上させた変更です。
`number_to_currency` が `precision: nil` の負数で起きていた TypeError を、ガード条件に `nil` 判定を加えるだけの修正で解消し、他の数値ヘルパーと同様の挙動を実現しました。
ActiveSupport::TimeZone#strptime がエポック秒フォーマットでサブ秒を失うバグを修正し、`Time.at` に `sec_fraction` を加算するだけのシンプルな変更でナノ秒単位の精度を保持できるようになった。テスト追加により既存機能への影響はなく、Rails と Ruby 標準の日時パースが揃った。
DelegateClass が暗黙ブロックを転送しない不具合を解消し、シグネチャ生成時に匿名ブロックを付加することで Ruby 標準と同等の振る舞いを実現した。
`has_many` の `default_order:` がステートメントキャッシュに反映されず生じた順序不整合を修正し、キャッシュは保持したまま全取得パスで正しい ORDER BY が適用されるようにした。
HashWithIndifferentAccess が falsy なデフォルト値(false)を失うバグを修正し、nil 以外のデフォルトはそのままコピーされるようになった。
`insert!` が `:unique_by` キーワードを受け取れるようになり、`insert` と同様の重複回避オプションが利用可能になったことで、メソッド間の一貫性が向上しました。
ActionMailer の `_deliver` コールバックに `only:` と `except:` が正式にサポートされ、AbstractController と同様の正規化ロジックを利用して API の一貫性と細かい制御が可能になった。