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

rails/rails

https://github.com/rails/rails

`titleize`がUnicode小文字を正しく大文字化するよう修正

`Inflector#titleize`の正規表現を`[a-z]`から`\p{Lower}`に変更し、`ć`・`đ`・`ü`・`ñ`などのUnicode小文字もタイトルケースへ正しく変換できるようになりました。変更は1行のパターン置き換えのみで、既存の単語境界判定ロジックはそのまま維持されています。

2026年03月27日 Claude Sonnet 4.6

DockerfileテンプレートのYarnインストールコマンドをCorepack対応に更新

Dockerfile.ttテンプレートのyarn installコマンドが、Corepack経由かどうかに応じて--immutableまたは--frozen-lockfileを自動選択するよう更新されました。Yarn BerryとYarn Classicでフラグ名が異なることによるビルドエラーを防ぐ1行の互換性修正です。

2026年03月27日 Claude Sonnet 4.6

MySQL エラー 1046 を `ConnectionFailed` として分類し、自動リトライを可能に

TCPプロキシによる接続リセット後にmysql2が発生させるMySQL エラー 1046(`ER_NO_DB_ERROR: No database selected`)が、`StatementInvalid` ではなく `ConnectionFailed` として分類されるようになりました。これにより `with_raw_connection` の組み込みリトライループが正常に機能し、コネクションプール利用時のサイレントな接続リセットからの自動復旧が可能になります。

2026年03月26日 Claude Sonnet 4.6

`number_to_delimited` のデフォルト動作を高速パスに統一

`NumberToDelimitedConverter` の `DEFAULT_DELIMITER_REGEX` 定数を削除し、`delimiter_pattern` メソッドを `options.fetch` から `options[]` による単純な参照に変更しました。これにより、`number_to_delimited` をオプションなしで呼び出した際に自動的に高速パスが使われるようになり、以前のコミットで導入されたパフォーマンス最適化が本来の意図どおりに機能します。

2026年03月26日 Claude Sonnet 4.6

セキュリティリリースの複数脆弱性修正をmainブランチへチェリーピック

RailsのセキュリティリリースコミットをmainブランチへチェリーピックするPRです。Action Dispatchのエラーページにおけるraw出力によるXSS、Action Viewタグヘルパーへの空白属性名注入、Active StorageのDiskServiceにおけるパストラバーサルおよびGlob injection、バイトレンジリクエストを悪用したDoS、Active SupportのSafeBufferフラグ伝播バグなど、複数コンポーネントにまたがる脆弱性修正が含まれます。

2026年03月24日 Claude Sonnet 4.6

`inverse_of` とコンポジット外部キーの組み合わせで発生する `FrozenError` を修正

`has_many`/`has_one` で `inverse_of` を使って外部キーを派生させる際、参照先の `belongs_to` がコンポジット外部キーを持つ場合に `FrozenError` が発生するバグを修正。`map!` による凍結済み配列への破壊的操作を `map { }.freeze` に置き換え、新しい凍結済み配列を生成する非破壊的操作へ変更しました。

2026年03月24日 Claude Sonnet 4.6

最小必須Rubyバージョンを3.3.0から3.3.1へ引き上げ

Rails全コンポーネントの必須Rubyバージョンが3.3.0から3.3.1へ引き上げられました。Ruby 3.3.0に存在する匿名rest引数をブロック内で使用した際のSyntaxErrorバグがActionViewに影響するため、コードの回避策ではなく最小バージョン要件の引き上げで対応されています。対象はrails.gemspecを含む全15ファイルのgemspecです。

2026年03月22日 Claude Sonnet 4.6

`insert_all` / `upsert_all` の匿名クラスにおけるログメッセージを修正

`insert_all` / `upsert_all` 実行時のログメッセージで、匿名クラスが `#<Class:0x...>` というオブジェクト参照で出力されていた問題を修正。`insert_all.rb` の1行を `model` から `model.name` に変更することで、匿名クラスでも `AnonymousBook Bulk Insert` のような読みやすいログエントリが記録されるようになります。

2026年03月21日 Claude Sonnet 4.6

ルーティングエラー画面のHTML構造を修正

ActionDispatchのルーティングエラー画面テンプレートにおいて、`<p>`タグ内に不正にネストされていた`<h2>`と`<ol>`タグを外部に移動しHTML仕様に準拠した構造に修正。ブラウザによる暗黙的なDOM修正が不要となり、正しいHTML構造が保証されます。

2026年03月21日 Claude Sonnet 4.6

LogSubscriberのflush判定を毎回の`respond_to?`呼び出しから一度限りのキャッシュに変更

`LogSubscriber.flush_all!`が呼び出されるたびに実行されていた`respond_to?(:flush)`の結果を`@supports_flush`インスタンス変数にキャッシュすることで、繰り返しの不要なメソッド探索を排除しました。ロガーの差し替え時には`logger=`メソッド内でキャッシュをリセットする設計で、`nil`と`false`を区別した実装が特徴です。

2026年03月21日 Claude Sonnet 4.6

テーブル作成時のSQL文をバッチ実行して高速化

`create_table` で発行される DROP TABLE・CREATE TABLE・COMMENT・CREATE INDEX などの複数SQL文を配列に蓄積して `execute_batch` で一括送信する方式に変更。1000以上のテーブルを持つPostgreSQLデータベースで、スキーマロード時間が約120秒から約25秒に短縮される。SQL生成と実行を分離する `_sql` ヘルパー群を新設することで既存APIとの後方互換性を維持しつつ実現している。

2026年03月19日 Claude Sonnet 4.6

PostgreSQLカラムの等値比較における`generated`型の不整合を修正

PostgreSQLの生成カラムにおいて、`Column#==`が`virtual?`(boolean)を使い、`#hash`が`@generated`(raw文字列)を使っていた不整合を修正しました。PostgreSQL 18+では生成カラムにstored(`"s"`)とvirtual(`"v"`)の2種類があるため、この不一致がRubyの`eql?`/`hash`コントラクト違反を引き起こしていました。`#==`を`generated == other.generated`に変更し、両者を同じ抽象レベルに統一することで問題を解消しています。

2026年03月18日 Claude Sonnet 4.6

ContentSecurityPolicyの`build_directive`で`flat_map`を使用するリファクタリング

`ContentSecurityPolicy`の`build_directive`メソッドで`map`+`flatten`を`flat_map`に統合するリファクタリングです。あわせて`validate`から平坦化の責務を除去し、`build_directive`に明示的な戻り値を追加することで、各メソッドの責務と戻り値の依存関係を整理しています。

2026年03月18日 Claude Sonnet 4.6

Minitest ライフサイクルの理解で解消した ENV リーク誤検知

`PostgresqlDbConsoleTest` で `LeakChecker` が ENV リークを誤検知していた問題を修正。原因は `#run` オーバーライドの `ensure` ブロックによる ENV 復元が `LeakChecker#after_teardown` より後に実行されていたことで、`setup`/`teardown` への切り替えにより実行順序を正しく整合させました。

2026年03月18日 Claude Sonnet 4.6

mail gem 2.7系向けワークアラウンドを削除し、コードをシンプル化

Action Mailboxのmail gem依存が>= 2.8に引き上げられたことで不要となった、バージョン分岐ワークアラウンドを削除する変更です。`address_list` プライベートメソッドを経由していたアドレス取得処理が、`header[...].element` への直接呼び出しに統一され、16行のコードが除去されました。

2026年03月17日 Claude Sonnet 4.6

ActionText: ブロックをエディタ要素のDOM子要素として描画するよう変更

ActionTextのブロック引数のセマンティクスが変更され、ブロックはエディタ要素のDOM子要素として描画されるようになりました。これにより `value`(リッチテキスト内容)とブロック(カスタム子要素)が独立して扱えるようになり、プロンプトメニューやツールバー拡張の埋め込みが可能になります。Trixは `value` 未指定時にブロックを初期値として使う既存の動作を維持します。

2026年03月16日 Claude Sonnet 4.6

ActiveRecordテストの通知サブスクライバ手動実装を `NotificationAssertions` ヘルパーに統一

ActiveRecordのテストで散在していた `ActiveSupport::Notifications.subscribed` の手動サブスクライバパターンを、`capture_notifications` と `assert_notification` ヘルパーに置き換えるリファクタリングです。ペイロード検査が必要なテストは `capture_notifications` + `map`/`reject` に、発火確認のみのテストは `assert_notification` に統一することで、コールバック・ローカル変数・購読ブロックが入り組んだコードが整理されています。

2026年03月16日 Claude Sonnet 4.6

`require_dependency` の非推奨化と Rails 9 での削除に向けた準備

`require_dependency` が非推奨となり、Rails 9 での削除に向けたプロセスが開始されました。呼び出し時に `ActiveSupport.deprecator.warn` による警告が出力されるようになり、アプリケーション・エンジン別の移行ガイダンスが警告メッセージに直接埋め込まれています。classic オートローダーの廃止から続く整理の一環として、代替メソッドなしでの削除が予定されています。

2026年03月16日 Claude Sonnet 4.6

`cattr_accessor`/`mattr_accessor`からクラスインスタンス変数へ:Railsの内部実装整理

Railsの内部実装で使われていた`cattr_accessor`/`mattr_accessor`を、クラスインスタンス変数(`singleton_class.attr_accessor`または`class_attribute`)へ置き換えるリファクタリングPRです。クラス変数の意味論的な問題(継承ツリー全体への影響)を排除し、用途に応じて3種類の置き換えパターンを適用しています。付随変更として`DateAndTime::Compatibility`モジュールが削除され、`utc_to_local_returns_utc_offset_times`が`ActiveSupport`モジュール自体に統合されました。

2026年03月15日 Claude Sonnet 4.6

PostgreSQL の `RESET` コマンドを読み取り専用コンテキストで実行可能に

PostgreSQL アダプターの `READ_QUERY` 正規表現に `:reset` キーワードを追加し、`prevent_writes: true` の読み取り専用コンテキストでも `RESET` コマンドが実行できるようになりました。`RESET` は `SET ... TO DEFAULT` の構文的ショートカットであり、既存の `:set` と同様に読み取り安全なクエリとして扱われます。

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

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ