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

rails/rails

https://github.com/rails/rails

`number_to_delimited` が非有限浮動小数点数を破壊する不具合を修正

`number_to_delimited(Float::INFINITY)` が `"In,fin,ity"` を返すリグレッションを修正しました。パフォーマンス改善で導入された手動スライスの高速パスが `"Infinity"` を数字列として扱っていたため、`NumberToDelimitedConverter#parts` の先頭に `respond_to?(:finite?)` を用いたガード節を1行追加して早期リターンするよう修正しています。

2026年05月28日 Claude Sonnet 4.6

ActiveRecordテストの通知アサーションをNotificationAssertionsヘルパーで統一

ActiveRecordテストスイートで残っていた手動のActiveSupport::Notifications.subscribeパターンをNotificationAssertionsヘルパーのcapture_notificationsに移行するリファクタリング。asynchronous_queries_test.rb、connection_pool_test.rb、load_async_test.rbが対象で、スレッドローカル制約のある非同期テストは意図的に除外されている。動作変更はなく、テストコードの可読性と保守性の向上が目的。

2026年05月28日 Claude Sonnet 4.6

Mailgunインバウンドメール署名の不正パラメータを適切に拒否する修正

Mailgunイングレスで`signature`パラメータが配列などの非文字列型で送信された場合、`secure_compare`内で`NoMethodError`が発生していたバグを修正しました。`signed?`メソッドに`signature.is_a?(String)`の型チェックを追加し、不正なパラメータ形状を`401 Unauthorized`として正しく処理するようになります。

2026年05月28日 Claude Sonnet 4.6

PostgreSQL接続時のタイムゾーン設定を必要な場合のみ発行するよう改善

PostgreSQLアダプターで、GUC名の大文字小文字処理を修正し、`TimeZone`など大文字を含む設定値のparameter_statusチェックが正しく機能するよう改善されました。`CANONICAL_GUC_NAMES`定数と小文字統一の二層構造により、既にサーバーに設定済みの値に対して余分なSETクエリが発行されなくなります。

2026年05月27日 Claude Sonnet 4.6

Active Job: `stopping?` にジョブを渡してきめ細かい割り込み制御を実現

Active JobのチェックポイントAPIが拡張され、`stopping?` がジョブインスタンスを受け取れるようになりました。これにより、Solid QueueやGood Jobなどのバックエンドがキュー名などのジョブ属性に基づいた一時停止機能を長時間実行ジョブのコンティニュエーションと連携できます。`stopping?(job = nil)` のオプション引数設計により後方互換性が保たれ、カスタム割り込み理由の返却もサポートされます。

2026年05月27日 Claude Sonnet 4.6

`ActiveSupport::ErrorReporter#report` でコンテキストハッシュをサブスクライバごとに複製

`ActiveSupport::ErrorReporter#report` が各サブスクライバにコンテキストハッシュを渡す際、`deep_dup` で複製するよう変更されました。これにより、あるサブスクライバが `context.delete` などの破壊的操作を行っても他のサブスクライバに影響しなくなり、サブスクライバの登録順序に依存したバグを防止できます。

2026年05月27日 Claude Sonnet 4.6

不正なマルチパラメータ属性キーで `NoMethodError` の代わりに `MultiparameterAssignmentErrors` を発生させる

閉じカッコのないマルチパラメータ属性キー(例: `"written_on("`)を渡した際に発生していた `NoMethodError` を修正し、他の不正なマルチパラメータ入力と同様に `ActiveRecord::MultiparameterAssignmentErrors` が発生するようになりました。内部専用の `InvalidParameterKey` 例外クラスを新設し、`find_parameter_position` での解析失敗を既存のエラーラッピング機構に乗せることで、呼び出し元が `rescue` するエラークラスを1つに統一できます。

2026年05月27日 Claude Sonnet 4.6

Mandrill ingressが`raw_msg`欠落イベントを422で正しく拒否するよう修正

MandrillインバウンドイベントでMIMEメッセージ本体(`raw_msg`)が欠落している場合に500エラーが発生していた問題を修正しました。`raw_emails`メソッドに`msg`がHashであるか、`raw_msg`がStringであるかの2段階バリデーションを追加し、不正なイベントを既存の`MalformedEventsError`で統一して422レスポンスを返すようにしています。

2026年05月27日 Claude Sonnet 4.6

`touch_attachment_records = false` 時にBlobアタッチがクラッシュする問題を修正

`ActiveStorage.touch_attachment_records = false` を設定している環境で、既存のBlobをRecordにアタッチすると `ActiveRecord::ActiveRecordError` が発生する問題が修正されました。#53623 でBlobのautosaveが廃止されたことで、`touch_attachments` コールバック発火時にAttachmentがまだ未永続化の状態になるケースが生じたため、`attachment.touch unless attachment.new_record?` の1行ガードを追加して対処しています。

2026年05月26日 Claude Sonnet 4.6

テストヘルパーにDBクリーンアップブロックを追加し、per-PIDデータベースの残留を防止

`use_postgresql` / `use_mysql2` ヘルパーがブロック構文を受け取れるようになり、ブロック実行前後のデータベース一覧を差分比較して新規生成されたDBを自動削除するようになりました。これにより、並列テストが生成する `railties_${Process.pid}_%` パターンのデータベースがテスト終了後に残留する問題が解消されます。各テストに散在していた `ensure rails "db:drop"` 節は削除され、クリーンアップロジックが `with_test_database_cleanup` ヘルパーに集約されました。

2026年05月26日 Claude Sonnet 4.6

PostgreSQLのenumスキーマダンプで型名を完全修飾名で出力するように修正

PostgreSQLで複数スキーマに同名のenumが存在する場合、`db:schema:dump`の`:enum_type`オプションが曖昧な型名を出力する問題を修正。既存の`relation_name`ヘルパーを活用し1行の変更でenum型名にもスキーマ修飾を適用することで、スキーマロード時の型の取り違えを防止します。

2026年05月26日 Claude Sonnet 4.6

PostgreSQLのスキーマ修飾オペレータクラス名がschema.rbから欠落するバグを修正

`dump_schemas`と複数スキーマ構成を併用した際に、`within_each_schema`による`schema_search_path`の絞り込みがPostgreSQLにスキーマ修飾されたオペレータクラス名(例:`shared_extensions.gin_trgm_ops`)を返させ、既存の正規表現がマッチできずに`schema.rb`への出力が欠落する不具合が修正されました。正規表現に`(?:\w+\.)?`プレフィックスを追加し、`.split(".").last`で単純名に正規化することで対応しています。

2026年05月26日 Claude Sonnet 4.6

複合外部キーを持つ `belongs_to touch: true` が旧レコードをタッチしない問題を修正

複合外部キーを持つ `belongs_to` アソシエーションで `touch: true` を設定している場合、外部キーの変更時に旧親レコードの `updated_at` が更新されないサイレントバグを修正。`saved_changes` が個別カラム名をキーとして持つのに対し、複合外部キーを配列のまま `changes` ハッシュで検索していたことが原因で、各カラムを個別に検索・旧値を復元するロジックに改修されました。

2026年05月25日 Claude Sonnet 4.6

PostgreSQLのスキーマ修飾テーブルに対するインデックスコメントのバグ修正

スキーマ修飾テーブル(例: `other_schema.widgets`)に `comment:` オプション付きで `add_index` を呼び出すと、PostgreSQLが `PG::UndefinedTable` エラーを発生させるバグが修正されました。`change_index_comment_sql` に `table_name` 引数を追加し、`Utils.extract_schema_qualified_name` でスキーマを抽出して `COMMENT ON INDEX` 文にスキーマ修飾名を使用するよう変更されています。

2026年05月23日 Claude Sonnet 4.6

SendGrid ingress で不正な envelope を 422 で安全に処理

Action Mailbox の SendGrid ingress において、構文上は有効な JSON だが期待するスキーマを満たさない `envelope` パラメータが `NoMethodError` でクラッシュしていた問題を修正。専用の `MalformedEnvelopeError` を導入し、既存の `rescue JSON::ParserError` と並べて捕捉することで、不正な envelope を一貫して `422 Unprocessable Content` で拒否するようになりました。

2026年05月23日 Claude Sonnet 4.6

Action MailboxのMandrillインテグレーションで不正な形式のペイロードを422で返すよう修正

Action MailboxのMandrillインテグレーションで、正当なJSONだが形状が誤った`mandrill_events`ペイロード(`null`、スカラー、オブジェクト、非Hashを含む配列など)が500エラーを引き起こしていた問題を修正。`MalformedEventsError`を導入してパース後のペイロードが「Hashの配列」であることを検証し、既存の`JSON::ParserError`処理と統合することで422を返すようになりました。

2026年05月23日 Claude Sonnet 4.6

Herb gem対応: バンドルERBテンプレートのHTML5違反を修正

Herb gem 0.10+のHTML-aware ERBコンパイラがRailsバンドルテンプレートで発生させるコンパイルエラーを修正しました。`<%= %>` 出力式を属性名スロットに配置するパターンを制御フロー式 `<% if %>` へ変換し、2013年から存在した孤立 `</code>` タグ(ルーティングエラーのテキストレスポンスに文字列としてレンダリングされていた)も合わせて除去しています。

2026年05月23日 Claude Sonnet 4.6

`NumberConverter::DEFAULTS` のネストされたHashをdeep freezeに変更

`NumberConverter::DEFAULTS` 内のネストされたHashに `.freeze` を追加し、定数全体をdeep freezeにしました。外側のHashのみfreezeされていた状態を改善し、定数をRactor間で安全に共有可能(shareable)にするRactor対応の一環です。

2026年05月23日 Claude Sonnet 4.6

`through` アソシエーションの `unscope` がジョインモデルのデフォルトスコープを無視するバグを修正

`has_many :through` アソシエーションで `unscope` を使用した際に、ジョインモデルのデフォルトスコープまで意図せず解除されるバグが修正されました。`unscope_values` を適用する際にテーブル名で修飾する `table_name_qualified_unscope_values` メソッドを追加することで、スコープ解除の対象を正確な対象テーブルに限定します。

2026年05月23日 Claude Sonnet 4.6

`reset_connection` を軽量化し、プール再生成が必要な呼び出し元を `reset_pool` へ移行

ActiveRecordのテストヘルパー `reset_connection` が、プール全体を入れ替える重実装から `@connection.reset!`(`DISCARD ALL`)を発行する軽量実装に変わりました。transactional fixtures との競合によるPostgreSQLコネクションリークが解消され、ナイティリ CI で発生していた `too many clients already` エラーが修正されます。プール再生成が本当に必要な呼び出し元は、新設の `reset_pool` ヘルパーに移行しています。

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

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ