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

rails/rails

https://github.com/rails/rails

`bigdecimal` 4.x のデフォルト文字列表現変更に対応したArelテストの修正

`bigdecimal` 4.x へのアップグレードで `BigDecimal#to_s` の出力形式が変わり、Arel のテストが失敗するようになりました。テストの期待値を固定文字列 `"2.14"` から `BigDecimal("2.14").to_s` の動的な出力へ変更することで、`bigdecimal` のバージョン間の差異を吸収しています。

2026年05月09日 Claude Sonnet 4.6

PostgreSQL アダプターのUUID正規表現で末尾ダッシュを拒否するよう修正

PostgreSQL アダプターの `ACCEPTABLE_UUID` 正規表現を修正し、末尾にダッシュを持つ不正なUUID文字列を正しく拒否するようになりました。PR #49934 で導入されたUUID柔軟受け入れ処理が末尾ダッシュを見逃す原因となっており、正規表現の繰り返し構造を「ダッシュ前置」方式に変更することで修正されています。

2026年05月09日 Claude Sonnet 4.6

`ActionController::Parameters#merge` が複数引数に対応し `Hash#merge` と完全に一致

`ActionController::Parameters#merge` および `#merge!` が複数のハッシュを同時に受け取れるようになり、Ruby の `Hash#merge` との引数互換性が完全に一致しました。引数シグネチャを `*other_hashes` に変更し、`map!(&:to_h)` でスプラット展開する最小限の実装で、既存コードへの影響なく機能を拡張しています。

2026年05月09日 Claude Sonnet 4.6

Active StorageのベースコントローラーにAPIオンリー対応の親クラス設定を追加

APIオンリーのRailsアプリでActive Storageのダイレクトアップロードを使用する際に発生していたCSRFエラーとOriginヘッダー不一致の問題を解消するため、`ActiveStorage::BaseController`の親クラスを設定できるようになりました。`config.api_only = true`の場合は自動で`ActionController::API`が選択され、`config.active_storage.base_controller_parent`で任意の親クラスを明示指定することも可能です。既存のアプリケーションへの影響はありません。

2026年05月09日 Claude Sonnet 4.6

`reading`ロールでの`prevent_writes`デフォルト値をメソッドパラメータへ移動

`connected_to`などのロール切り替えメソッドで、`reading`ロール使用時に`prevent_writes`を`true`へ強制する処理をメソッド本体からパラメータのデフォルト値(`role == ActiveRecord.reading_role`)へ移動しました。あわせて、`reading`ロールで`prevent_writes: false`を明示した場合は黙って上書きする代わりに`ArgumentError`を送出するよう変更され、メソッドシグネチャがそのままドキュメントとして機能するようになっています。

2026年05月09日 Claude Sonnet 4.6

エラーページの「Copy as text」でHTMLエスケープ文字が混入するバグを修正

Railsの開発用エラーページの「Copy as text」ボタンで、スタックトレースにHTMLエスケープ文字(`&#39;` など)が混入するバグが修正されました。テキストの格納要素を `<script type="text/plain">` から `<textarea hidden>` に変更し、JavaScriptの取得プロパティを `.textContent` から `.value` に切り替えることで、ブラウザの自動エスケープを回避しています。

2026年05月09日 Claude Sonnet 4.6

CIハングを防ぐ汎用タイムアウトヘルパー `wait_for` の導入

Active Recordのテストスイートで、無限ポーリングループによりCIジョブがハングする問題を修正。タイムアウト付き汎用ヘルパー `wait_for` を導入し、既存の `WaitForAsyncTestHelper` を `WaitForTestHelper` に統合することで、テストが必ずタイムアウトエラーとして失敗するようになった。

2026年05月09日 Claude Sonnet 4.6

`NotificationAssertions` ヘルパーによるActiveRecordテストの簡素化

`ActiveSupport::Notifications.subscribe` と `asserted` フラグを使った手動購読パターンを `assert_notification` ヘルパーで置き換え、`trilogy_adapter_test.rb`・`instrumentation_test.rb`・`query_cache_test.rb` のテストを簡素化しました。通知の取得と検証ロジックが分離され、`ensure` による手動 `unsubscribe` も不要になります。[#56989](https://github.com/rails/rails/pull/56989) に続く ActiveRecord テストの `NotificationAssertions` 対応完了です。

2026年05月09日 Claude Sonnet 4.6

`run_after_transaction_callbacks_in_order_defined` 有効時に `prepend: true` が無視されるバグを修正

`config.active_record.run_after_transaction_callbacks_in_order_defined = true` を有効にした環境で `after_commit` / `after_rollback` コールバックに渡した `prepend: true` が無視されるバグを修正。`set_options_for_callbacks!` の呼び出し側で `prepend_option` を強制上書きしていた設計を改め、コールバック種別を第1引数で渡す形式に変更することで、ユーザーの意図したオプションが正しく尊重されるようになった。

2026年05月09日 Claude Sonnet 4.6

Mailgun Action Mailboxで不正なタイムスタンプを適切に拒否する

Mailgun Action Mailboxのイングレスで、不正なタイムスタンプを含むリクエストが`ArgumentError`によりサーバーエラーになっていた問題を修正。タイムスタンプのパースに`Integer(timestamp, exception: false)`を導入し、HMAC署名用の生文字列と整数変換済みの値を分離することで、不正リクエストを意図通り`401 Unauthorized`として拒否するようになりました。

2026年05月09日 Claude Sonnet 4.6

MySQL系アダプターのテスト実行時にAbstractMySQLのテストも自動収集するよう修正

MySQL系アダプター(`mysql2`、`trilogy`)のテスト実行時に、`abstract_mysql_adapter` 配下のテストが自動収集されない問題が修正されました。`activerecord/test/support/tools.rb` の `list_tests` メソッドに `case` 文による明示的な列挙ロジックが追加され、共通の抽象アダプター層のテストが漏れなく実行されるようになります。

2026年05月08日 Claude Sonnet 4.6

タイムゾーン識別子を廃止名から正規名へ更新(Europe/Kyiv・Asia/Yangon)

`ActiveSupport::TimeZone::MAPPING` 内の廃止されたIANA識別子 `Europe/Kiev` と `Asia/Rangoon` を、正規名である `Europe/Kyiv` と `Asia/Yangon` へ置き換えました。ActiveSupport側のキー名(`"Kyiv"`・`"Rangoon"`)は変更されないため既存コードへの影響はなく、最新のtzdata環境でのタイムゾーン解決が確実に動作するようになります。

2026年05月08日 Claude Sonnet 4.6

`class_attribute`をRactor対応に再設計、クロージャからivarへ

`ActiveSupport::ClassAttribute`の実装が、値をクロージャに閉じ込める方式から、オーナークラスのインスタンス変数で管理する方式へと再設計されました。クラス自体はRactor間で共有可能なため`Ractor.shareable_proc`でwrapでき、ivarのRactorセマンティクスも自然に適用されます。パフォーマンスへの影響は10%未満に収まっており、シングルトンクラスへの代入時に`instance_reader: false`が無視されるバグも同時に修正されています。

2026年05月08日 Claude Sonnet 4.6

FormBuilderに`datalist`メソッドが追加され、ブラウザオートコンプリートの実装が簡潔に

FormBuilderに`f.datalist`メソッドが追加され、`<datalist>`要素をモデルの命名規則に沿ったIDで自動生成できるようになりました。`field_id`メソッドによるID導出を活用し、`text_field`の`list:`属性との紐付けをフレームワーク側で管理できます。内部では既存の`datalist_tag`に委譲するシンプルな実装で、ラベル・値ペア形式の選択肢など既存機能もそのまま利用可能です。

2026年05月08日 Claude Sonnet 4.6

`Rails.cache.read` に `delete: true` オプションを追加——Redisのアトミックな読み取り削除に対応

`Rails.cache.read` に `delete: true` オプションが追加され、`RedisCacheStore` でRedisの `GETDEL` コマンドを使ったアトミックな読み取りと削除が可能になりました。OTPコードやワンタイムトークンなど「一度しか消費できない値」の管理で発生しがちな競合状態を根本から排除できます。`LocalCache` レイヤーではRedisへの直接アクセスとインメモリキャッシュの削除も適切に処理されており、他のキャッシュストアでは暗黙的に無視される設計です。

2026年05月08日 Claude Sonnet 4.6

`has_json` アクセサが `NoMethodError` を起こす暗黙依存を修正

`ActiveModel::SchematizedJson` が内部で使用する `String#remove` メソッドの依存が暗黙的だったため、`active_model` を単体でrequireした環境で `has_json` アクセサが `NoMethodError` を発生させていた問題を修正。`schematized_json.rb` に `active_support/core_ext/string/filters` のrequireを1行追加し、依存関係を明示化することで解消しました。

2026年05月08日 Claude Sonnet 4.6

Active Record Encryption のキーを環境変数で直接指定可能に

Rails.app.creds の多段解決機能を活用し、Active Record Encryption の暗号化キー(primary_key、deterministic_key、key_derivation_salt)を ACTIVE_RECORD_ENCRYPTION__* という規約名の環境変数で直接指定できるようになりました。railtie が app.credentials.dig から app.creds.option に切り替わることで、config/application.rb に手動設定コードを記述する必要がなくなります。

2026年05月07日 Claude Sonnet 4.6

`datalist_tag` ヘルパーの追加によるHTML datalist要素の生成サポート

Action Viewに `datalist_tag` ヘルパーが追加され、HTML `<datalist>` 要素をRailsの流儀で簡潔に生成できるようになりました。既存の `options_for_select` と同じ書式でオプションを指定できるため、`content_tag` をネストして記述していたボイラープレートを解消できます。

2026年05月07日 Claude Sonnet 4.6

`ActionController::Parameters#fetch_values` による複数キーの一括取得

`ActionController::Parameters` に `fetch_values` メソッドが追加され、複数のパラメータを一度に取得できるようになりました。Ruby の `Hash#fetch_values` と同様のインターフェースを持ち、ブロックなしの場合は `ActionController::ParameterMissing` を raise します。内部実装では `Hash#fetch_values` に委譲しつつ、シンボル/文字列キーの同一視やパーミッション状態の引き継ぎも適切に処理されています。

2026年05月07日 Claude Sonnet 4.6

EXIFミラー方向の画像アナライザが返す寸法の誤りを修正

Active StorageのVipsおよびImageMagickアナライザで、EXIFミラー方向(orientation 2, 4, 5, 7)を持つ画像のblobメタデータに記録される幅・高さが誤っていた問題を修正しました。`rotated_image?`が判定する向きのセットを、実際に90°/270°の回転を伴うorientation 5, 6, 7, 8のみに修正することで、フリップのみの向き(2, 4)では寸法を入れ替えず、フリップ+回転の向き(5, 7)では正しく入れ替えるようになります。

2026年05月07日 Claude Sonnet 4.6
前へ 1 … 6 7 8 9 10 21 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ