https://github.com/rails/rails
PostgreSQL のタイムゾーン名 `US/Eastern` が廃止されたことによる接続エラーを防ぐため、テストコードのタイムゾーン指定を `America/New_York` に置換し、テストの安定性を確保した変更です。
MessagePack で `time` カラムを持つレコードが例外で失敗していた問題を、ActiveRecord::Type::Time::Value を型 ID 118 として登録し、シリアライズ/デシリアライズロジックを追加することで解消しました。
Polymorphic `has_one` の代入や `nil` 設定で外部キーは null になるが type カラムが残る不具合を、`HasOneAssociation#nullify_owner_attributes` に type クリア処理を追加し、`dependent: :nullify` と同等の挙動に統一した修正です。
Active Record に `sql_notifications` 接続オプションと NullInstrumenter が追加され、接続単位で SQL 通知を無効化できるようになり、不要な計測オーバーヘッドを削減します。
database.yml の接続プールに `query_log_tags_format` を設定できるようになり、プールごとにクエリログタグ形式を上書き可能となった。実装は HashConfig アクセサ追加、QueryLogs のキャッシュ分離、テスト追加で構成される。
Enumerable ヘルパー `pluck`・`pick`・`compact_blank` の未テストエッジケースをカバーするテストが追加され、ドキュメント通りの挙動が自動検証されるようになりました。
PostgreSQL の警告がクエリ実行後に必ずクリアされるよう抽象ステートメントと PostgreSQL 固有実装を修正し、二重表示と例外マスキングを防止した。
Action CableはRedisとPostgreSQLのサブスクリプションアダプタだけをeager loading除外対象に絞り、他の軽量アダプタは標準的にロードするよう変更。Redis.rbの不要なrequireも削除し、起動コストと保守性を向上させました。
Redis アダプタが `Base` と `ChannelPrefix` を明示的に `require` することで、Zeitwerk の遅延ロード競合による NameError を防止し、ブロードキャストの安定性を向上させました。
`update_attribute` と `update_attribute!` が属性エイリアスを解決せずに読み取り専用チェックをスキップしていた問題を修正し、エイリアスでも例外が発生するよう統一した。
ActionCable の `unsubscribe` が存在しないサブスクリプションでも例外を出さず冪等化され、エラーログのノイズが減少しました。
Active Record のコールバック順序に関する誤記を削除し、"コールバックは定義順に実行される" と正確に記述したドキュメント修正です。
テスト実行中の接続プールリークを防止するため、pool の明示的切断ロジックを `teardown_shared_connection_pool` と `clean_up_connection_handler` に追加し、CI の `too many clients` エラーを解消しました。
String の `remove`, `remove!`, `truncate_words` の境界ケーステストを追加し、未検証の no‑op 挙動を保証。実装変更はなく、テストカバレッジが向上しました。
RedisCacheStore のテストで failsafe が抑制していた RedisClient のタイムアウト例外を再スローさせ、原因が即座に分かるようにした変更です。
ActiveModel::Type::Boolean の `serialize` と `serialize_cast_value` を検証するテストが追加され、ブール型変換のカバレッジが向上しました。実装変更はなく、設計はそのままです。
`reset_column_sequences!` が quoted スキーマのテーブルで起きていた `NoMethodError` を、名前正規化ユーティリティ `Utils.extract_schema_qualified_name` の導入で根本的に解消し、テストで安全性を確認したことを解説します。
単一レコードハッシュの属性数で `:limit` が誤検出していたバグを、正規化後にレコード数を評価するよう修正し、テストで全ての limit 形式で正しく動作することを確認した。
Ractor の shareability ヘルパーを Ruby 4.0 以上でのみ有効化し、Ruby 3.x では no‑op に置き換えることで例外を回避し、バージョン判定を一箇所に集約した設計変更です。
Mysql2Adapter が `affected_rows` をローカル変数で取得し、結果が nil の場合でも `ActiveRecord::Result.empty` にラップして行数情報を保持できるようにした変更です。インスタンス変数の除去でスレッド安全性が向上し、テストが期待通りに動作するようになりました。