DiffDaily Deep & Concise - OSS変更の定点観測
トップに戻る

rails/rails

https://github.com/rails/rails

Attachment付きメールでの multipart body 部分検出を修正

ActionMailer の `assert_part` / `assert_no_part` が添付ファイル付きメールの本文を検出できなかった問題を、`Mail#all_parts` に置換して解消し、テストの正確性と互換性を保ちました。

2026年05月31日 gpt-oss-120b

Rate limiting が `by:` に渡すオブジェクトの `cache_key` を自動利用

Rate limiting の `by:` が `cache_key` を持つオブジェクトを自動的にキーとして利用できるよう拡張され、ユーザー単位のレート制御が簡潔に記述可能になった。

2026年05月31日 gpt-oss-120b

PostgreSQL の `rails dbconsole` が `schema_search_path` を尊重するように変更

`rails dbconsole` が `schema_search_path` を PGOPTIONS に反映し、PostgreSQL のコンソール接続とアプリケーション設定を一致させる変更です。設定ハッシュは deep_dup され安全に扱われ、既存変数との互換性も維持されています。

2026年05月31日 gpt-oss-120b

PostgreSQL `cidr`/`inet` カラムのIPv6プレフィックスがスキーマダンプで失われるバグを修正

PostgreSQL の `cidr`/`inet` カラムで IPv6 アドレスをデフォルト値に使用した際、スキーマダンプ時に `/32` プレフィックスが誤って省略されサイレントにデータが破壊されるバグを修正。`type_cast_for_schema` の判定条件を `value.ipv6? ? 128 : 32` に変更し、アドレスファミリーに応じた正しいフルマスク長と比較するよう改めました。2014年の導入以来続いていた IPv4 専用の仮定が解消されています。

2026年05月31日 Claude Sonnet 4.6

NullPoolのデッドロックをMutexからMonitorへの切り替えで修正

スタンドアロン接続(NullPool使用)が初回クエリでサーバーバージョンを取得する際に発生するデッドロックを修正。同期プリミティブを再入不可能なMutexから再入可能なMonitorに切り替えることで、ConnectionPoolと同様の動作を実現しました。

2026年05月30日 Claude Sonnet 4.6

Active RecordのRactor対応:定数のfreeze化とキャッシュの共有化

Active Recordの各モジュールで定数やキャッシュオブジェクトを積極的にfreezeする変更が導入されました。`||=`によるメモ化パターンをfreeze済み定数への参照に置き換えることで、Ractor間での安全なオブジェクト共有を可能にします。PR #57323に続くRactor対応の一環です。

2026年05月29日 Claude Sonnet 4.6

`preconnect`に`reaper_lock`を追加してリーパーとの競合状態を修正

`pool.preconnect`がリーパースレッドと並行実行された際の競合状態を修正。`preconnect`メソッド全体を`reaper_lock`ブロックで囲むことで、`disconnect`等の既存グローバル操作と同一のロック戦略に統一しました。リエントラントな`Monitor`実装により、リーパー自身の`preconnect`呼び出しはブロックされません。

2026年05月29日 Claude Sonnet 4.6

`async_count` が `limit(0)` のとき Promise を返さない不具合を修正

`Post.limit(0).async_count` が `ActiveRecord::Promise` ではなく生の整数 `0` を返していたバグが修正されました。`execute_simple_calculation` の早期リターンパスで `@async` フラグを確認し、非同期モードでは `Promise::Complete.new(0)` を返すよう1行変更することで、クエリを発行しない高速パスを維持しつつ型契約を満たします。

2026年05月29日 Claude Sonnet 4.6

`eager_load: true` 時に ERBTracker が登録される不具合を修正

`eager_load: true` 環境で `load_defaults 8.1` を使用すると ERB テンプレートの依存関係トラッキングに `ERBTracker` が誤って登録される不具合が修正されました。原因はネストした `after_initialize` ブロックによる実行タイミングのずれで、専用の `initializer "action_view.set_render_tracker"` への切り出しと、`render_tracker=` セッターへのトラッカー登録ロジックの集約によって解消されています。

2026年05月29日 Claude Sonnet 4.6

デフォルト順序を定義できる `default_order` をリレーションとアソシエーションに追加

Active Recordに `#default_order` クエリメソッドと `default_order` アソシエーションオプションが追加されました。`order_values` とは独立した `default_order_values` として管理されるため、明示的な `order` が存在する場合はデフォルト順序が自動的に無視される設計になっています。`has_many` の宣言オプションとメソッドチェーンの両方のインターフェースをサポートしています。

2026年05月29日 Claude Sonnet 4.6

`before_subscribe` コールバックで `#reject` を呼んだ際に `#subscribed` をスキップするよう修正

Action Cable の `before_subscribe` コールバック内で `#reject` を呼んでも `#subscribed` が実行されてしまうバグが修正されました。`subscribe_to_channel` メソッドに `unless subscription_rejected?` の条件を1行追加することで、通常のコントローラにおける `before_action` のガード動作と一貫した挙動が実現されています。

2026年05月29日 Claude Sonnet 4.6

`Array#to_query` が空ハッシュを含む場合の二重 `&&` を修正

`Array#to_query` が空ハッシュ `{}` を含む配列に対して `&&` を二重出力していたバグを修正。`collect` を `filter_map` に置き換え、`to_query` が空文字列を返す要素を結合前に除外することで、WHATWG URL 標準に準拠した正しいクエリ文字列を生成するようになりました。

2026年05月29日 Claude Sonnet 4.6

Ractor共有性メソッドのシムをKernelに追加

Active SupportのRactor対応に向けた準備として、`Kernel`モジュールに`ractor_make_shareable`など4つのシムメソッドが追加されました。Ractorが利用可能な環境では実際のRactorメソッドへ委譲し、そうでない環境ではno-op(引数をそのまま返す)として動作します。バージョン判定をロード時の`if`で完結させることで、フレームワーク全体のバージョン分岐コードを排除しつつ呼び出しコストを最小に抑えた設計です。

2026年05月29日 Claude Sonnet 4.6

`ActionDispatch::ExceptionWrapper` をRactor対応に変更し、設定APIを追加

`ActionDispatch::ExceptionWrapper` のクラス変数(`rescue_responses`・`rescue_templates`・`wrapper_exceptions`・`silent_exceptions`)をfreezeし、設定適用を破壊的メソッドから新オブジェクト再代入方式に変更してRactor安全にしました。あわせて `wrapper_exceptions` と `silent_exceptions` の公開設定API(`config.action_dispatch.wrapper_exceptions` / `config.action_dispatch.silent_exceptions`)が追加されています。

2026年05月29日 Claude Sonnet 4.6

Action Cable のサーバー層アダプタ化:低レベル処理とアプリケーション層の分離

Action Cable の内部アーキテクチャが大幅に再編され、WebSocket処理などの低レベル実装(Server::Socket)とアプリケーション層(Connection::Base)が明確に分離されました。ThreadedExecutor の独立、SubscriberMap::Async による非同期処理の統一、専用エラークラスの導入など、代替サーバー実装を可能にする拡張性の基盤が整備されています。既存のユーザーコードへの破壊的変更はありません。

2026年05月29日 Claude Sonnet 4.6

Action Mailbox の Ingress コントローラが不正な raw email パラメータを 422 で拒否するように修正

Mailgun・Postmark・SendGrid の Action Mailbox Ingress コントローラが、raw email パラメータに文字列以外の値(配列など)が渡された場合に `422 Unprocessable Content` を返すようになりました。これまでは不正な値が内部処理まで到達して `TypeError` を発生させていましたが、各コントローラに `MalformedEmailError` が追加されたことで、既存の不正値処理パターンと一貫した挙動になっています。

2026年05月29日 Claude Sonnet 4.6

MariaDBカラム取得時の不要なクエリを削減する最適化

MariaDBの関数デフォルト検出を `new_column_from_field`(カラムごと)から `column_definitions`(テーブルごと)へ移動することで、非MariaDB接続での余分な `SHOW CREATE TABLE` クエリを完全に排除。MariaDB接続でも候補が存在する場合のみ最大1回のクエリに抑え、スキーマ取得のクエリ数を4回から3回に削減しました。

2026年05月28日 Claude Sonnet 4.6

Action Mailbox: 不正な形式の original recipient パラメータを 422 で拒否

Mailgun・Postmark の Action Mailbox ingress において、配列などの不正な形式の original recipient パラメータが `String#prepend` に到達して `TypeError` を発生させていた問題を修正しました。各コントローラに専用の例外クラスと型チェックメソッドを追加し、不正なパラメータには仕様通り `422 Unprocessable Content` を返すようになります。

2026年05月28日 Claude Sonnet 4.6

ActiveJob::TestHelperのO(N)スキャンをO(1)リセットに置き換えるリファクタリング

`ActiveJob::TestHelper`がテストのsetup/teardownごとに全Jobサブクラスをスキャンしていたパフォーマンス問題(O(N))と、ActiveSupport 8.1.3での`class_attribute`変更に起因するアダプター検出バグを修正。`TestQueueAdapter`モジュールをConcernベースからレジストリパターンに全面改修し、teardownのリセット処理をO(1)に改善しました。

2026年05月28日 Claude Sonnet 4.6

`significant: true` で非有限数を渡すと `FloatDomainError` が発生する問題を修正

`significant: true` オプション使用時に `Float::INFINITY` や `Float::NAN` を渡すと `FloatDomainError` が発生していた問題を修正しました。`RoundingHelper#digit_count` に非有限数の早期リターンを1行追加することで、`number_to_rounded`・`number_to_percentage`・`number_to_currency`・`number_to_delimited` の4つのヘルパーで `significant` パスと非 `significant` パスの挙動が統一されます。

2026年05月28日 Claude Sonnet 4.6
前へ 1 2 3 4 … 21 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ