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

rails/rails

https://github.com/rails/rails

Rails 6.1 Active Record Marshalフォーマットのサポート終了

Rails 6.1形式のActive Record Marshalフォーマットが削除され、7.1形式のみがサポートされるようになりました。`Attribute` / `AttributeSet`の内部APIを後方互換性の制約なく進化させることが目的です。6.1形式を使用しているアプリケーションはRails 8.2へのアップグレード前に7.1形式への移行とキャッシュのフラッシュが必要です。

2026年05月18日 Claude Sonnet 4.6

スキーマキャッシュのカラム・インデックスソートを差し戻し

スキーマキャッシュダンプ時にカラムとインデックスを名前順ソートする変更(#54960)が差し戻されました。ソートがスキーマキャッシュの実行時カラム順序に影響し、`pluck("*")` などのクエリ結果が変わるバグを引き起こすことが判明したためです。テーブル名のソートは引き続き維持されます。

2026年05月18日 Claude Sonnet 4.6

`deliver_all_later`と`perform_all_later`のロード順序バグを修正

Rails 8.1で`ActionMailer.deliver_all_later`がデフォルトで`NoMethodError`になっていたバグを修正。原因はオートロードの遅延により、メソッドが必要なタイミングで未定義だったことです。`deliver_all_later`と`perform_all_later`の定義をオートロード対象ファイルからモジュールのエントリポイント(`action_mailer.rb`・`active_job.rb`)へ移動することで、起動時から確実にメソッドが利用可能になりました。

2026年05月18日 Claude Sonnet 4.6

`BatchEnumerator`に`cursor`・`order`・`use_ranges`属性を追加

`BatchEnumerator`に`cursor`・`order`・`use_ranges`の3つの属性リーダーが追加され、`in_batches`のすべてのパラメータに外部からアクセスできるようになりました。あわせて`cursor`の文字列変換タイミングが`BatchEnumerator`生成後に移動され、公開される属性値の型整合性が確保されています。

2026年05月18日 Claude Sonnet 4.6

`has_many_attached`に複数添付ファイルの合計バイトサイズを取得するメソッドを追加

`has_many_attached`で管理する複数添付ファイルの合計バイトサイズを返す`byte_size`メソッドが`ActiveStorage::Attached::Many`に追加されました。内部では`blobs.pluck(:byte_size).sum`を使い、blobオブジェクトを全件ロードせずに効率よく合計を算出します。

2026年05月18日 Claude Sonnet 4.6

`in_order_of` で範囲外整数を渡した際の `RangeError` を修正

`ActiveRecord::QueryMethods#in_order_of` に4バイト整数の上限を超えた値を渡すと発生していた `ActiveModel::RangeError` を修正しました。`type_cast_for_database` の一律呼び出しを `caster.serializable?` による条件付きシリアライズに置き換えることで、範囲外の整数を無視する `Enumerable` 版との挙動の一貫性を実現しています。

2026年05月17日 Claude Sonnet 4.6

`DestroyAssociationAsyncJob#perform` に `**options` 引数を追加して拡張性を確保

`DestroyAssociationAsyncJob#perform` に `**_options` キーワードスプラットを追加し、将来の引数追加時に既存アプリケーションが `ArgumentError` を起こさないよう拡張性を確保した変更です。`dependent: :destroy_async` の機能改善(#42452、#42430)に向けた基盤整備として、1行の最小変更で後方互換性が担保されています。

2026年05月17日 Claude Sonnet 4.6

スキーマダンプ時のカラム名アルファベット順ソートをリバート

`schema.rb` のカラム出力をアルファベット順にソートする変更(#53281)がリバートされました。`db:prepare` 実行時にデータベースの実際のカラム順と異なるテーブル構造が生成される問題が判明したためです。スキーマファイルの正確な再現性を優先し、差分品質の改善よりもデータベース状態の忠実な表現を選択した判断です。

2026年05月16日 Claude Sonnet 4.6

`ActiveModel::Conversion#render_in` のデフォルト実装を一時的に差し戻し

`ActiveModel::Conversion#render_in` のデフォルト実装(PR #57349)が、コントローラーベースのビューパーシャル名前空間が正しく適用されないエッジケースを理由に差し戻されました。未リリースの段階で問題が発覚したため、後方互換性を損なうことなくクリーンに取り消しが実施され、エッジケースに対応した改訂版PRへの再提出が予定されています。

2026年05月16日 Claude Sonnet 4.6

`only_columns` 設定時にSELECTで列を明示列挙するよう修正

`only_columns`(#55121で導入)を設定したモデルでも`SELECT "table".*`が発行され続けるバグを修正。`build_select`の条件分岐に`model.only_columns.any?`を追加することで、`ignored_columns`と同様に列の明示列挙が行われるようになり、`only_columns`の設定がSQL生成まで正しく反映されるようになった。

2026年05月15日 Claude Sonnet 4.6

`render_in` の `:object` オプション衝突問題を明示的に解消

`ActiveModel::Conversion#render_in` において、呼び出し元が `:object` オプションを渡した際に発生する `ArgumentError` やサイレントな `self` の上書きを防ぐため、`options.delete(:object)` による明示的な除去が追加されました。これにより「`self` が常に rendered object になる」という優先ポリシーがコードレベルで保証されます。

2026年05月15日 Claude Sonnet 4.6

PostgreSQLのUPDATEで仮想カラムを自動リロード — RETURNING句を活用した余分なラウンドトリップの排除

PostgreSQLアダプターがUPDATE実行時にRETURNING句を自動付与し、仮想カラムの再計算値をインプレースで取得できるようになりました。update後にreloadを呼ぶ必要がなくなり、余分なデータベースラウンドトリップも排除されます。auto_populated?メソッドのリネームとDeprecationも合わせて行われ、create時とupdate時で対称的なAPIが整備されています。

2026年05月15日 Claude Sonnet 4.6

`insert_all` でシリアライズ済み値のコーダー往復処理をスキップする最適化

PR #48139 で導入されたリグレッションにより、シリアライズ列(YAML/JSON)を持つテーブルへの `insert_all` が生SQLの約2倍遅くなっていた問題を修正。`insert_all` 内部の値処理パスに `type.serialized?` による条件分岐を追加し、シリアライズ済みの値に対して不要な `cast`(`YAML.dump` → `YAML.load` のラウンドトリップ)をスキップすることで性能を回復させる。変更は3行にとどまり、属性代入など他の操作パスへの影響はない。

2026年05月15日 Claude Sonnet 4.6

Action Text のダイレクトアップロードイベントに `id`・`file` プロパティと2つの新イベントを追加

Action Text の `AttachmentUpload` クラスが発火するダイレクトアップロードイベントに `id` と `file` プロパティが追加され、Active Storage のイベント仕様との整合性が取られました。あわせて `direct-upload:initialize`・`direct-upload:before-blob-request`・`direct-upload:before-storage-request` の3イベントが新設され、イベントのターゲット要素に関するドキュメントの誤り(`<input>` → `<trix-editor>`)も修正されています。

2026年05月15日 Claude Sonnet 4.6

トランザクションロールバック後に`lock_version`が古い値のままになるバグを修正

オプティミスティックロックを持つレコードをトランザクション内で保存し、そのトランザクションがロールバックされた際に、インメモリの`lock_version`がインクリメントされた値のまま残り次の保存で`StaleObjectError`が発生するバグを修正しました。`restore_transaction_record_state`でロッキングカラムを`attr.with_value_from_database(attr.original_value)`で再構築することで、ロールバック後もインメモリ状態がデータベースと一致するようになります。

2026年05月15日 Claude Sonnet 4.6

ParameterFilterの正規表現最適化における行アンカーの意味的差異を修正

`/^token$/` と `/\Atoken\z/` を同等に扱っていた ParameterFilter のハッシュルックアップ最適化のバグを修正。行アンカー(`^$`)と文字列アンカー(`\A\z`)を別々のハッシュ(`@exact_line_keys` / `@exact_string_keys`)で管理することで、改行を含むキーへの正確なマッチングを維持しつつ高速なルックアップを実現しています。

2026年05月15日 Claude Sonnet 4.6

`app:update` 実行時に `new_framework_defaults` を自動削除する改善

`config.load_defaults` が現在のRailsバージョンを指している場合、`app:update` タスクが `new_framework_defaults` ファイルを不要に再生成しなくなりました。`Gem::Version` によるバージョン比較を用い、アップグレード済みアプリケーションで繰り返し `app:update` を実行した際の設定ファイルの散乱を防止します。

2026年05月15日 Claude Sonnet 4.6

`add_index`の配列構文で式インデックスが使えるように

`add_index`で配列構文を使った式インデックスが正しく機能しない問題が修正されました。`index_column_names`メソッドが拡張され、配列内に式(`lower(email)`など)が含まれる場合を要素単位で検出してカンマ区切り文字列に変換するようになります。これにより`add_index :users, ["lower(email)", :status]`のような記法が文字列形式と同様に動作します。

2026年05月15日 Claude Sonnet 4.6

ArelのINSERT/UPDATE/DELETEにRETURNING句のサポートを追加

ArelのDeleteManager・InsertManager・UpdateManagerに `returning` メソッドが追加され、INSERT/UPDATE/DELETE文でRETURNING句をArelの構文として組み立てられるようになりました。ノードクラス・マネージャークラス・Visitorクラスの3層に一貫してサポートが追加されており、CTEと組み合わせた複雑なデータ操作クエリの構築が可能になります。今回の変更はArelレベルのみで、ActiveRecordへの統合は含まれません。

2026年05月15日 Claude Sonnet 4.6

ActiveStorage に `attach!` が追加され、添付失敗を例外で検知可能に

ActiveStorage の `attach` メソッドに、バリデーション失敗時に `ActiveRecord::RecordNotSaved` を発生させる `attach!` が追加されました。`Attached::One` と `Attached::Many` の両クラスに実装され、`save!` などの ActiveRecord 永続化メソッド群と同様の bang メソッドのセマンティクスを提供します。戻り値チェックの漏れによるサイレントな添付失敗を防ぐことができます。

2026年05月15日 Claude Sonnet 4.6
前へ 1 … 4 5 6 7 8 21 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ