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

rails/rails

https://github.com/rails/rails

MySQLのDDL操作に`lock:`オプションと`algorithm:`の適用範囲を拡張

MySQLのDDL操作において、`algorithm:`と`lock:`オプションがカラム操作(`add_column`、`change_column`、`remove_column`、`rename_column`)にも指定できるようになりました。これまで生SQLで記述せざるを得なかった大規模テーブルへのオンラインスキーマ変更が、Railsマイグレーションの範囲内で完結します。

2026年03月13日 Claude Sonnet 4.6

生成されるDockerfileのビルドパフォーマンスを2つの最適化で改善

Railsが生成するDockerfileテンプレート(`Dockerfile.tt`)とテストフィクスチャ(`Dockerfile.test`)に対し、2つのレイヤー最適化が適用されました。`rm -rf node_modules`をassets precompileステップに統合することで約13秒、`chown -R`を`COPY --chown`に置き換えることで約50秒、合計60〜70秒のビルド時間短縮が見込まれます。

2026年03月13日 Claude Sonnet 4.6

`activerecord`テストの`NotificationAssertions`ヘルパーへの移行

`activerecord`の11件のテストが`ActiveSupport::Testing::NotificationAssertions`の`capture_notifications`ヘルパーを使用するよう簡素化されました。手動でのサブスクライバ管理や`ensure`ブロックによるクリーンアップが不要になり、フィルタリングや変換は標準の`Enumerable`メソッドチェーンに委ねる設計で、購読解除漏れのリスクを構造的に排除しています。

2026年03月13日 Claude Sonnet 4.6

キャッシュストアのInstrumentationテストを`NotificationAssertions`で簡潔化

`activesupport/test/cache/behaviors/cache_store_behavior.rb` の2つのInstrumentationテストが `capture_notifications` ヘルパーを使う形にリファクタリングされました。手動のサブスクライバー登録と `ensure` ブロックによるクリーンアップが不要になり、キャプチャスコープがブロックで明示されることでテストの意図が構造から読み取れるようになっています。

2026年03月13日 Claude Sonnet 4.6

SQLite仮想テーブルが`ignore_tables`に従うよう修正

SQLiteの仮想テーブルが `ActiveRecord::SchemaDumper.ignore_tables` の設定を無視してスキーマダンプに出力されていたバグが修正されました。`sqlite3/schema_dumper.rb` の `virtual_tables` メソッドに1行の `reject` を追加し、既存の `ignored?` メソッドを活用することで、FTS5やSpatialiteが生成する仮想テーブルも通常テーブルと同様にフィルタリングできるようになります。

2026年03月13日 Claude Sonnet 4.6

Action TextのMarkdownリンク生成にURIスキーム検証を追加

Action TextのMarkdownパイプラインで、危険なURIスキーム(`data:text/html` など)を含む `<action-text-attachment>` 要素が未検証のままMarkdown画像リンクとして出力される問題を修正。`MarkdownConversion.markdown_link` に `Rails::HTML::Sanitizer.allowed_uri?` チェックを追加し、スキームが許可されない場合はリンクの代わりにエスケープされたテキスト `\[title\]` を返すようにした。`image:` オプションの統合により呼び出し側の処理も一元化されている。

2026年03月13日 Claude Sonnet 4.6

SQLite仮想テーブルの括弧なしパターンに対するスキーマダンプの修正

SQLite の仮想テーブル検出に使用している `VIRTUAL_TABLE_REGEX` の正規表現を `.+` から `.*` に修正し、`USING module()` のように括弧内が空のケースでも正しくマッチするようになりました。SpatiaLite 拡張を GpkgMode で使用した際に壊れた `schema.rb` が生成される問題(#56969)が解消されています。

2026年03月13日 Claude Sonnet 4.6

非同期クエリの `caller_runs` フォールバックによるインストゥルメンターの汚染を修正

`async_query_executor` に `:global_thread_pool` を使用している環境で、スレッドプールが飽和して `caller_runs` フォールバックが発動すると、`execute_or_skip` が `IsolatedExecutionState` のインストゥルメンターを `EventBuffer` に置き換えたまま復元せず、以降の `sql.active_record` 通知がサイレントに消える問題を修正。`EventBuffer` のセットアップ前に既存のインストゥルメンターを保存し、`ensure` ブロックで確実に復元する2行の変更で対処しています。

2026年03月12日 Claude Sonnet 4.6

`execute_or_skip`実行後にインストゥルメンターが汚染される問題を修正

`FutureResult#execute_or_skip`が`caller_runs`フォールバックポリシーで呼び出しスレッド上で実行された際に、`IsolatedExecutionState`のインストゥルメンターが`EventBuffer`で上書きされたまま復元されないバグを修正。2行の保存・復元処理の追加により、スレッドプール飽和時でも`sql.active_record`通知が正常に配信されるようになります。

2026年03月12日 Claude Sonnet 4.6

スレッドプール飽和時のインストゥルメンターリーク修正

`FutureResult#execute_or_skip` がスレッドプール飽和時に `caller_runs` フォールバックでカレントスレッド上で実行された際、`EventBuffer` で上書きされたインストゥルメンターが復元されずスレッド汚染が発生する不具合を修正しました。ミューテックス取得直後に既存のインストゥルメンターを保存し、`ensure` ブロックで復元する2行の変更で、`sql.active_record` 通知の配信保証を回復しています。

2026年03月12日 Claude Sonnet 4.6

`--skip-action-mailer`環境でのAuthenticationジェネレータのテスト生成を修正

`--skip-action-mailer`でRailsアプリを作成後に`authentication`ジェネレータを実行すると、ActionMailer関連のテストが生成されエラーが発生する問題を修正しました。テンプレートに`defined?(ActionMailer::Railtie)`チェックを追加し、ActionMailerが無効な環境では`create`アクション関連のメールテストを生成しないよう変更しています。

2026年03月11日 Claude Sonnet 4.6

`actionpack`テストの`NotificationAssertions`ヘルパーへの移行

`actionpack/test/controller/redirect_test.rb`内の`ActiveSupport::Notifications`関連テストを`NotificationAssertions`ヘルパーへ移行するリファクタリングです。`capture_notifications`ヘルパーの導入により、手動でのサブスクライバー登録・解除(`ensure`ブロック)が不要になり、テストコードがより簡潔になりました。機能変更は伴いません。

2026年03月11日 Claude Sonnet 4.6

`dbconsole` の NotImplementedError メッセージに誤ったクラス名が表示される不具合を修正

`AbstractAdapter.dbconsole` クラスメソッド内の `NotImplementedError` メッセージで `self.class` を使っていたため、アダプタークラス名ではなく `Class` という文字列が表示される不具合を修正しました。`#{self.class}` を `#{self}` に変更する1行の修正で、クラスメソッドにおける `self` の正しい挙動に合わせ、エラーメッセージに正確なクラス名が表示されるようになります。

2026年03月10日 Claude Sonnet 4.6

counter_cacheにおける外部キーの不要な型変換を削除

`Reflection#foreign_key` が常に frozen/interned な String または Array を返すという型保証に基づき、`counter_cache` 処理内の不要な `.to_s` / `.to_sym` 変換と `_foreign_keys_equal?` ヘルパーメソッドが削除されました。機能的な変更はなく、型の保証をコードに直接反映させたクリーンアップです。

2026年03月10日 Claude Sonnet 4.6

`raise_on_missing_required_finder_order_columns` のデフォルト値を修正

`ActiveRecord.raise_on_missing_required_finder_order_columns` のデフォルト値が、コピー&ペーストのミスにより `false` ではなく `nil` になっていた不具合を修正。`nil` と `false` はどちらもfalsy値のため動作への影響はないが、Railsガイドに記載された公式デフォルト値とコードの乖離が解消される。

2026年03月09日 Claude Sonnet 4.6

Ruby 4.1 のエラーメッセージ変更に対応した比較バリデーションのテスト修正

Ruby 4.1.0dev での比較エラーメッセージ末尾への追加情報付加(`coercion was not possible` 等)により、Rails Nightly CI で `test_validates_comparison_of_incomparables` が失敗するようになりました。テストの完全一致を正規表現の前方一致(`/\Acomparison of Integer with String failed/`)に変更し、`assert_equal` を `assert_match` に統一することで、メッセージのプレフィックス検証を維持しつつ将来のメッセージ変更に耐性を持たせています。

2026年03月07日 Claude Sonnet 4.6

Active RecordのPostgreSQL最小バージョン要件を9.3から9.5に引き上げ

PostgreSQL 9.5で追加された`array_position`関数を利用するコードが#55654で導入されていたにもかかわらず、バージョンチェックのしきい値が9.3のままだった不整合を修正。`check_version`メソッドのしきい値を`9_05_00`に更新し、関連ドキュメント3箇所のバージョン表記も合わせて9.5に統一しました。

2026年03月04日 Claude Sonnet 4.6

`run_order` メソッド定義のガード条件を正しい対象クラスに修正

`ActiveSupport::TestCase` における `run_order` メソッド定義のガード条件で、`respond_to?` のレシーバーが `Minitest` モジュールから正しい対象である `Minitest::Runnable` クラスへ修正されました。Minitest 6のAPIへの対応コードが、実際にメソッドを持つオブジェクトへ正しく問い合わせるようになります。

2026年03月03日 Claude Sonnet 4.6

`x_sendfile_header` が未設定の場合に `Rack::Sendfile` をスタックから除外

`config.action_dispatch.x_sendfile_header` が `nil` の場合、`Rack::Sendfile` ミドルウェアをスタックへ追加しないよう変更されました。このミドルウェアはヘッダー未設定時にnoopとして動作するため、デフォルト構成から除外することでミドルウェアスタックを簡潔に保ちます。`x_sendfile_header` を明示的に設定しているアプリケーションへの影響はありません。

2026年03月02日 Claude Sonnet 4.6

strict_locals の非ASCII文字デフォルト値で発生するエンコーディングエラーを修正

`File.binread` でロードされたテンプレートで strict locals に非ASCII文字のデフォルト値を使用した際に発生する `Encoding::CompatibilityError` を修正しました。`strict_locals!` が `encode!` より先にキャプチャした `@strict_locals` が ASCII-8BIT タグを引き継ぐことが原因で、`force_encoding(Encoding.default_external)` の追加によりエンコーディングタグを揃えることで解消しています。

2026年03月02日 Claude Sonnet 4.6
前へ 1 … 11 12 13 14 15 21 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ