<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Ruby on Rails PR Digest</title>
        <link>https://yuheinakasaka.github.io/rails-pr-digest</link>
        <description>rails/railsリポジトリにマージされたPull RequestをAIで要約した日本語ダイジェスト</description>
        <lastBuildDate>Fri, 03 Apr 2026 00:20:01 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Rails PR Digest RSS Generator</generator>
        <language>ja</language>
        <copyright>Copyright © 2025 Yuhei Nakasaka</copyright>
        <item>
            <title><![CDATA[[#57126] Removed unnecessary code since minimum ruby required is 3.3.1 {#pr-57126}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-04#pr-57126</link>
            <guid>https://github.com/rails/rails/pull/57126</guid>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57115] Allow to prepend AS::Notification subscribers {#pr-57115}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-04#pr-57115</link>
            <guid>https://github.com/rails/rails/pull/57115</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57108] ActiveSupport::Cache add a fast path for string keys {#pr-57108}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-04#pr-57108</link>
            <guid>https://github.com/rails/rails/pull/57108</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#56664] Fix inverse_of on composite keys in ActiveRecord::Associations::Association#inversable?  {#pr-56664}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-56664</link>
            <guid>https://github.com/rails/rails/pull/56664</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57103] Update ActiveRecord::Associations::Preloader::Association.owners_by_key to handle composite keys {#pr-57103}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57103</link>
            <guid>https://github.com/rails/rails/pull/57103</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#55991] Add AGENTS.md with Rails codebase guide for AI coding agents {#pr-55991}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-55991</link>
            <guid>https://github.com/rails/rails/pull/55991</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57105] Speedup ActiveRecord::LogSubscriber#sql_color {#pr-57105}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57105</link>
            <guid>https://github.com/rails/rails/pull/57105</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57106] Add missing require openssl to ActiveStorage {#pr-57106}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57106</link>
            <guid>https://github.com/rails/rails/pull/57106</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.]]></description>
            <content:encoded><![CDATA[<p>要約エラー: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57096] Ignore schemas when validating table name lengths for PostgreSQL {#pr-57096}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57096</link>
            <guid>https://github.com/rails/rails/pull/57096</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgreSQL でテーブル名の長さを検証する際に、`schema_name.table_name` のようなスキーマ部分を含めず、**純粋なテーブル名だけで長さチェックするように修正した PR**です。これにより、スキーマ名を含めたフル修飾名が 63 文字を超えていても、テーブル名自体が PostgreSQL の制限以内ならマイグレーションが通るようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgreSQL でテーブル名の長さを検証する際に、<code>schema_name.table_name</code> のようなスキーマ部分を含めず、<strong>純粋なテーブル名だけで長さチェックするように修正した PR</strong>です。これにより、スキーマ名を含めたフル修飾名が 63 文字を超えていても、テーブル名自体が PostgreSQL の制限以内ならマイグレーションが通るようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57097] ActiveStorage: skip associated tests when a dependency is missing {#pr-57097}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57097</link>
            <guid>https://github.com/rails/rails/pull/57097</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Active Storage の一部テスト（動画アナライザ／プレビュー、MuPDF プレビュー）について、必要な外部依存ライブラリがインストールされていない環境ではテスト自体をスキップするようにした変更です。これにより、Active Storage の小変更を行う際に、全ての外部ツールをローカルに入れなくてもテストが実行しやすくなります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Active Storage の一部テスト（動画アナライザ／プレビュー、MuPDF プレビュー）について、必要な外部依存ライブラリがインストールされていない環境ではテスト自体をスキップするようにした変更です。これにより、Active Storage の小変更を行う際に、全ての外部ツールをローカルに入れなくてもテストが実行しやすくなります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57094] Delay engine route building {#pr-57094}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57094</link>
            <guid>https://github.com/rails/rails/pull/57094</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails Engine が `routes do ... end` を評価するタイミングを遅延させ、`make_routes_lazy` 最適化が正しく効くようにした変更です。  
これにより、`graphql` など Engine 内で直接 `routes do` を呼んでいるライブラリでも、ルーティングの遅延構築によるパフォーマンス改善が適用されます。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails Engine が <code>routes do ... end</code> を評価するタイミングを遅延させ、<code>make_routes_lazy</code> 最適化が正しく効くようにした変更です。  <br>これにより、<code>graphql</code> など Engine 内で直接 <code>routes do</code> を呼んでいるライブラリでも、ルーティングの遅延構築によるパフォーマンス改善が適用されます。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57090] Fix duplicated word in configuring guide {#pr-57090}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57090</link>
            <guid>https://github.com/rails/rails/pull/57090</guid>
            <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Railsガイド「Configuring Rails Applications」の `config.action_on_early_load_hook` に関する記述から、誤って重複していた "when" という単語を削除するドキュメント修正PRです。アプリケーションコードや挙動には一切影響せず、ガイド文言のみが整備されています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Railsガイド「Configuring Rails Applications」の <code>config.action_on_early_load_hook</code> に関する記述から、誤って重複していた "when" という単語を削除するドキュメント修正PRです。アプリケーションコードや挙動には一切影響せず、ガイド文言のみが整備されています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57013] Predefine the well-known Postgres type OIDs {#pr-57013}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57013</link>
            <guid>https://github.com/rails/rails/pull/57013</guid>
            <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgreSQL の組み込み型について、`pg_type` を毎回問い合わせて OID を取得するのをやめ、Rails 側に「よく知られた型 OID」の一覧を同梱して接続時に即座にロードできるようにした変更です。ユーザー定義型や拡張で初めて未知の型に遭遇したときにのみ、これまで通り `pg_type` をクエリして補完する遅延ロード方式へと切り替えています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgreSQL の組み込み型について、<code>pg_type</code> を毎回問い合わせて OID を取得するのをやめ、Rails 側に「よく知られた型 OID」の一覧を同梱して接続時に即座にロードできるようにした変更です。ユーザー定義型や拡張で初めて未知の型に遭遇したときにのみ、これまで通り <code>pg_type</code> をクエリして補完する遅延ロード方式へと切り替えています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57029] Document with_rich_text_* methods {#pr-57029}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57029</link>
            <guid>https://github.com/rails/rails/pull/57029</guid>
            <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Action Text の `with_rich_text_*` 系メソッド（`with_rich_text_body` など）が公式にドキュメント化されるよう、`ActionText::Attribute` に Yard コメントが追加された PRです。機能追加や挙動変更ではなく、「どう使うか」が Rails API ドキュメントにきちんと出るように整理したドキュメント改善です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Action Text の <code>with_rich_text_*</code> 系メソッド（<code>with_rich_text_body</code> など）が公式にドキュメント化されるよう、<code>ActionText::Attribute</code> に Yard コメントが追加された PRです。機能追加や挙動変更ではなく、「どう使うか」が Rails API ドキュメントにきちんと出るように整理したドキュメント改善です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57082] Document that `:if` and `:unless` options on validations accept arrays [ci skip] {#pr-57082}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57082</link>
            <guid>https://github.com/rails/rails/pull/57082</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveModel` のバリデーションにおける `:if` / `:unless` オプションが「配列を受け付ける」ことを、公式ドキュメント側に明示的に追記したPRです。挙動自体はすでに存在していたもので、実装変更ではなくドキュメントの補強です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveModel</code> のバリデーションにおける <code>:if</code> / <code>:unless</code> オプションが「配列を受け付ける」ことを、公式ドキュメント側に明示的に追記したPRです。挙動自体はすでに存在していたもので、実装変更ではなくドキュメントの補強です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57050] Combine per-validator and top-level :if/:unless/:on in validates {#pr-57050}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57050</link>
            <guid>https://github.com/rails/rails/pull/57050</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`validates` でトップレベルとバリデータ単位の `:if` / `:unless` / `:on` オプションを同時に指定した場合に、これらを「上書き」ではなく「結合」するように挙動が変更されました。これにより、期待どおり「両方の条件を満たしたときだけバリデーションが走る」ようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>validates</code> でトップレベルとバリデータ単位の <code>:if</code> / <code>:unless</code> / <code>:on</code> オプションを同時に指定した場合に、これらを「上書き」ではなく「結合」するように挙動が変更されました。これにより、期待どおり「両方の条件を満たしたときだけバリデーションが走る」ようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57080] Deprecate `schema_order` option in PostgreSQL database configurations {#pr-57080}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57080</link>
            <guid>https://github.com/rails/rails/pull/57080</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgreSQL 用のデータベース設定オプション `schema_order` が非推奨となり、今後は `schema_search_path` を使うように変更されました。`schema_order` は過去の名前の名残であり、現行の命名に統一するための整理です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgreSQL 用のデータベース設定オプション <code>schema_order</code> が非推奨となり、今後は <code>schema_search_path</code> を使うように変更されました。<code>schema_order</code> は過去の名前の名残であり、現行の命名に統一するための整理です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57077] Deprecate the `strict` option in MySQL database configurations {#pr-57077}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57077</link>
            <guid>https://github.com/rails/rails/pull/57077</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
MySQL 用のデータベース設定オプション `strict` が非推奨になり、代わりに `variables: { sql_mode: ... }` を直接指定する形に整理された PR です。Rails が推奨しない「非 strict モード」のための特別なショートカットを廃止し、設定方法を一本化しています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>MySQL 用のデータベース設定オプション <code>strict</code> が非推奨になり、代わりに <code>variables: { sql_mode: ... }</code> を直接指定する形に整理された PR です。Rails が推奨しない「非 strict モード」のための特別なショートカットを廃止し、設定方法を一本化しています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57070] Consolidate configure_connection and allow skipping individual settings {#pr-57070}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57070</link>
            <guid>https://github.com/rails/rails/pull/57070</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgreSQL / MySQL 接続時のセッション設定処理が「1つの設定ハッシュを作って一括適用する」形にリファクタされ、サーバ側の現状値を確認して不要な `SET` クエリをスキップするようになりました。さらに、特定の設定を `false` にすることで「Rails からはその設定を一切触らない」ようにできるオプションが追加され、`set_standard_conforming_strings` は非推奨になりました。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgreSQL / MySQL 接続時のセッション設定処理が「1つの設定ハッシュを作って一括適用する」形にリファクタされ、サーバ側の現状値を確認して不要な <code>SET</code> クエリをスキップするようになりました。さらに、特定の設定を <code>false</code> にすることで「Rails からはその設定を一切触らない」ようにできるオプションが追加され、<code>set_standard_conforming_strings</code> は非推奨になりました。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57053] Fix parallel test shutdown hang when workers die during Server#shutdown {#pr-57053}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57053</link>
            <guid>https://github.com/rails/rails/pull/57053</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails の並列テスト実行時に、`Server#shutdown` 中にワーカープロセスが死んだ場合にシャットダウン処理がハングする問題を修正した PR です。`wait_for_active_workers` ループ内で定期的に子プロセスの終了を回収することで、ゾンビプロセスによる無限待ちを防ぎます。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails の並列テスト実行時に、<code>Server#shutdown</code> 中にワーカープロセスが死んだ場合にシャットダウン処理がハングする問題を修正した PR です。<code>wait_for_active_workers</code> ループ内で定期的に子プロセスの終了を回収することで、ゾンビプロセスによる無限待ちを防ぎます。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57047] Add test coverage for Error#initialize_dup, #hash, and #detail {#pr-57047}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57047</link>
            <guid>https://github.com/rails/rails/pull/57047</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveModel::Error のテスト不足だったメソッド（`initialize_dup`, `hash`, `detail`）に対して、専用のテストが追加されました。挙動の仕様をテストで明文化することで、`error.rb` のテストカバレッジが実質的に埋められています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveModel::Error のテスト不足だったメソッド（<code>initialize_dup</code>, <code>hash</code>, <code>detail</code>）に対して、専用のテストが追加されました。挙動の仕様をテストで明文化することで、<code>error.rb</code> のテストカバレッジが実質的に埋められています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57044] Add test coverage for ActiveModel::Errors#import {#pr-57044}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57044</link>
            <guid>https://github.com/rails/rails/pull/57044</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveModel::Errors の公開メソッド `import` に対して、これまで存在しなかった専用のテストが追加されました。機能追加や挙動変更はなく、既存の挙動を明示的に保証するためのテストのみの変更です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveModel::Errors の公開メソッド <code>import</code> に対して、これまで存在しなかった専用のテストが追加されました。機能追加や挙動変更はなく、既存の挙動を明示的に保証するためのテストのみの変更です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57048] Add test coverage for NestedError#inner_error, #raw_type, and #options {#pr-57048}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57048</link>
            <guid>https://github.com/rails/rails/pull/57048</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveModel::NestedError` が持つ `inner_error`, `raw_type`, `options` の3つのアクセサに対して、これまで不足していた専用テストを追加するPRです。振る舞い自体の変更はなく、テストカバレッジを補強するだけの変更です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveModel::NestedError</code> が持つ <code>inner_error</code>, <code>raw_type</code>, <code>options</code> の3つのアクセサに対して、これまで不足していた専用テストを追加するPRです。振る舞い自体の変更はなく、テストカバレッジを補強するだけの変更です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57049] Add test coverage for Errors#to_hash with full_messages and #uniq! {#pr-57049}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57049</link>
            <guid>https://github.com/rails/rails/pull/57049</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveModel::Errors に対して、これまで直接はテストされていなかった `to_hash(true)` と `uniq!` の挙動を確認するテストが追加されています。挙動変更はなく、テストカバレッジの補完のみです。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveModel::Errors に対して、これまで直接はテストされていなかった <code>to_hash(true)</code> と <code>uniq!</code> の挙動を確認するテストが追加されています。挙動変更はなく、テストカバレッジの補完のみです。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57046] Add test coverage for Errors#delete with type and options {#pr-57046}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57046</link>
            <guid>https://github.com/rails/rails/pull/57046</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveModel::Errors#delete が本来サポートしている `type` と `options` を指定した削除挙動について、新たにテストが追加された PR です。これにより、既存機能のフィルタリングロジックに対して直接的なテストカバレッジが付きました。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveModel::Errors#delete が本来サポートしている <code>type</code> と <code>options</code> を指定した削除挙動について、新たにテストが追加された PR です。これにより、既存機能のフィルタリングロジックに対して直接的なテストカバレッジが付きました。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57043] Add test coverage for ActiveModel::Error#strict_match? {#pr-57043}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57043</link>
            <guid>https://github.com/rails/rails/pull/57043</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveModel::Error#strict_match?` に対して専用のテストが追加され、属性・タイプ・オプションが「完全一致」しているかを判定する挙動が明示的に保証されるようになりました。機能追加や仕様変更ではなく、既存のパブリック API のテスト補完のみです。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveModel::Error#strict_match?</code> に対して専用のテストが追加され、属性・タイプ・オプションが「完全一致」しているかを判定する挙動が明示的に保証されるようになりました。機能追加や仕様変更ではなく、既存のパブリック API のテスト補完のみです。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57045] Add test coverage for EnvironmentInquirer predicates {#pr-57045}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57045</link>
            <guid>https://github.com/rails/rails/pull/57045</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveSupport::EnvironmentInquirer` に用意されている `development?`, `test?`, `production?` の各述語メソッドに対して、これまで不足していたテストを追加する PR です。合わせて、カスタム環境（例: `"staging"`）での振る舞いが `StringInquirer` にフォールバックすることや、`local?` が非ローカル環境で `false` を返すことも明示的にテストしています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveSupport::EnvironmentInquirer</code> に用意されている <code>development?</code>, <code>test?</code>, <code>production?</code> の各述語メソッドに対して、これまで不足していたテストを追加する PR です。合わせて、カスタム環境（例: <code>"staging"</code>）での振る舞いが <code>StringInquirer</code> にフォールバックすることや、<code>local?</code> が非ローカル環境で <code>false</code> を返すことも明示的にテストしています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57071] Fix titleize to capitalize unicode lowercase letters {#pr-57071}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57071</link>
            <guid>https://github.com/rails/rails/pull/57071</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails の `ActiveSupport::Inflector#titleize` が、ASCII 以外の小文字（đ, é, ü, ñ, ć など）も正しく先頭大文字化できるように、正規表現を `[a-z]` から Unicode の小文字クラス `\p{Ll}` に変更した PR です。これにより、多言語テキストでのタイトル化処理が期待通りに動作します。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails の <code>ActiveSupport::Inflector#titleize</code> が、ASCII 以外の小文字（đ, é, ü, ñ, ć など）も正しく先頭大文字化できるように、正規表現を <code>[a-z]</code> から Unicode の小文字クラス <code>\p{Ll}</code> に変更した PR です。これにより、多言語テキストでのタイトル化処理が期待通りに動作します。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57074] Update yarn install command to support immutable and frozen-lockfile in Dockerfile.tt {#pr-57074}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57074</link>
            <guid>https://github.com/rails/rails/pull/57074</guid>
            <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails のアプリ生成時に使われる `Dockerfile.tt` の Yarn インストールコマンドが更新され、Yarn が Corepack 管理かどうかに応じて `--immutable` または `--frozen-lockfile` を使い分けるようになりました。これにより、Yarn 1 系／Yarn 2+（Berry）や Corepack 利用など、さまざまな環境でより安全かつ互換性の高いインストールが行えるようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails のアプリ生成時に使われる <code>Dockerfile.tt</code> の Yarn インストールコマンドが更新され、Yarn が Corepack 管理かどうかに応じて <code>--immutable</code> または <code>--frozen-lockfile</code> を使い分けるようになりました。これにより、Yarn 1 系／Yarn 2+（Berry）や Corepack 利用など、さまざまな環境でより安全かつ互換性の高いインストールが行えるようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57063] [ci skip] Improve readability of note about redefining the `id` column {#pr-57063}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57063</link>
            <guid>https://github.com/rails/rails/pull/57063</guid>
            <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Active Record Basics ガイド内で、「`id` カラムを再定義した場合の挙動」を説明している注意書きのエラーメッセージ表記を、1行で見やすくなるように整形したドキュメント変更です。コードや挙動には一切手を加えていません。

2. 変更内容の詳細(あればサンプルコードも含めて)  
- 対象ファイル: `guides/source/active_record_basics.md`  
- 「`id` カラムを自前で定義したときに Active Record がどのようなエラーを出すか」を示す注意書き部分にある **エラーメッセージの表記** が、複数行に分割されていて読みにくかったため、1行にまとめる変更が行われました。  
- 実際の diff は概ね以下のようなイメージです（内容は同じで、改行位置のみ変更）:

  ```md
  **Before (イメージ)**

  Note: If you redefine `id` column, Rails will raise an error like:
  `ActiveRecord::UnknownPrimaryKey:
  Unknown primary key for table users in model User.`

  **After (イメージ)**

  Note: If you redefine `id` column, Rails will raise an error like:
  `ActiveRecord::UnknownPrimaryKey: Unknown primary key for table users in model User.`
  ```

- これにより、ガイドを読むときにエラーメッセージ全体を一目で把握できるようになります。

3. 影響範囲・注意点  
- 影響範囲は **Rails ガイドの文章表現のみ** で、フレームワーク本体の挙動・API・パブリックインターフェイスには変更ありません。  
- `id` カラム再定義時に `ActiveRecord::UnknownPrimaryKey` が発生するという仕様やそのメッセージ内容自体は従来どおりです。  
- コードや既存アプリケーションへの互換性の影響はありません。テストや CHANGELOG の更新も不要なレベルのドキュメント修正として扱われています。

4. 参考情報 (あれば)  
- 該当ガイド: Active Record Basics（`id` カラムの扱いと主キーの説明セクション）  
- エラークラス: `ActiveRecord::UnknownPrimaryKey`  
- PR: #57063 “[ci skip] Improve readability of note about redefining the `id` column”]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Active Record Basics ガイド内で、「<code>id</code> カラムを再定義した場合の挙動」を説明している注意書きのエラーメッセージ表記を、1行で見やすくなるように整形したドキュメント変更です。コードや挙動には一切手を加えていません。</p><p>2. 変更内容の詳細(あればサンプルコードも含めて)  <br><ul><li>対象ファイル: <code>guides/source/active_record_basics.md</code>  </li></ul><br><ul><li>「<code>id</code> カラムを自前で定義したときに Active Record がどのようなエラーを出すか」を示す注意書き部分にある <strong>エラーメッセージの表記</strong> が、複数行に分割されていて読みにくかったため、1行にまとめる変更が行われました。  </li></ul><br><ul><li>実際の diff は概ね以下のようなイメージです（内容は同じで、改行位置のみ変更）:</li></ul></p><p>  <pre><code>  <strong>Before (イメージ)</strong></p><p>  Note: If you redefine <code>id</code> column, Rails will raise an error like:<br>  <code>ActiveRecord::UnknownPrimaryKey:<br>  Unknown primary key for table users in model User.</code></p><p>  <strong>After (イメージ)</strong></p><p>  Note: If you redefine <code>id</code> column, Rails will raise an error like:<br>  <code>ActiveRecord::UnknownPrimaryKey: Unknown primary key for table users in model User.</code><br>  </code></pre></p><p><ul><li>これにより、ガイドを読むときにエラーメッセージ全体を一目で把握できるようになります。</li></ul></p><p>3. 影響範囲・注意点  <br><ul><li>影響範囲は <strong>Rails ガイドの文章表現のみ</strong> で、フレームワーク本体の挙動・API・パブリックインターフェイスには変更ありません。  </li></ul><br><ul><li><code>id</code> カラム再定義時に <code>ActiveRecord::UnknownPrimaryKey</code> が発生するという仕様やそのメッセージ内容自体は従来どおりです。  </li></ul><br><ul><li>コードや既存アプリケーションへの互換性の影響はありません。テストや CHANGELOG の更新も不要なレベルのドキュメント修正として扱われています。</li></ul></p><p>4. 参考情報 (あれば)  <br><ul><li>該当ガイド: Active Record Basics（<code>id</code> カラムの扱いと主キーの説明セクション）  </li></ul><br><ul><li>エラークラス: <code>ActiveRecord::UnknownPrimaryKey</code>  </li></ul><br><ul><li>PR: #57063 “[ci skip] Improve readability of note about redefining the <code>id</code> column”</li></ul></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57064] Bump Github Action upload-artifactversion to 7 {#pr-57064}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57064</link>
            <guid>https://github.com/rails/rails/pull/57064</guid>
            <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails が生成する GitHub Actions CI ワークフローテンプレートにおいて、`actions/upload-artifact` のバージョン指定を最新の `v7` に更新する PR です。アプリケーションとプラグインの両方の GitHub CI テンプレートが対象です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails が生成する GitHub Actions CI ワークフローテンプレートにおいて、<code>actions/upload-artifact</code> のバージョン指定を最新の <code>v7</code> に更新する PR です。アプリケーションとプラグインの両方の GitHub CI テンプレートが対象です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57067] Classify mysql error 1046 (ER_NO_DB_ERROR) as ConnectionFailed {#pr-57067}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57067</link>
            <guid>https://github.com/rails/rails/pull/57067</guid>
            <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
MySQL のエラーコード 1046「No database selected」を、`ActiveRecord::ConnectionFailed` として扱うようにした変更です。これにより、接続プール使用時などに TCP 接続がサイレントに張り替わった場合でも、Rails の自動リトライ機構が働くようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>MySQL のエラーコード 1046「No database selected」を、<code>ActiveRecord::ConnectionFailed</code> として扱うようにした変更です。これにより、接続プール使用時などに TCP 接続がサイレントに張り替わった場合でも、Rails の自動リトライ機構が働くようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57069] Make fast behavior the default for NumberToDelimitedConverter {#pr-57069}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57069</link>
            <guid>https://github.com/rails/rails/pull/57069</guid>
            <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`number_to_delimited` などの数値区切り系ヘルパーで、オプション未指定時にも常に高速化された経路（fast path）が使われるようにデフォルト動作が修正されました。これにより、従来は暗黙に実行されていた低速な処理が、明示的に指定した場合にのみ使われるようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>number_to_delimited</code> などの数値区切り系ヘルパーで、オプション未指定時にも常に高速化された経路（fast path）が使われるようにデフォルト動作が修正されました。これにより、従来は暗黙に実行されていた低速な処理が、明示的に指定した場合にのみ使われるようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57054] Cherry-pick security release commits onto main branch {#pr-57054}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57054</link>
            <guid>https://github.com/rails/rails/pull/57054</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1–2文)  
このPRは、セキュリティリリースで入った修正を `main` ブランチにチェリーピックしたもので、主に Active Storage 周りのファイルアクセス／ダウンロードの安全性向上と、Action View のタグ生成・HTMLセーフティ関連の修正が含まれています。例外画面テンプレートや `String#html_safe` 周りも含めて、XSS/ディレクトリトラバーサル等の脆弱性を防ぐための変更と、それを担保するテスト追加が中心です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1–2文)  <br>このPRは、セキュリティリリースで入った修正を <code>main</code> ブランチにチェリーピックしたもので、主に Active Storage 周りのファイルアクセス／ダウンロードの安全性向上と、Action View のタグ生成・HTMLセーフティ関連の修正が含まれています。例外画面テンプレートや <code>String#html_safe</code> 周りも含めて、XSS/ディレクトリトラバーサル等の脆弱性を防ぐための変更と、それを担保するテスト追加が中心です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#56877] Fix FrozenError when deriving foreign key from inverse with composite foreign key {#pr-56877}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-56877</link>
            <guid>https://github.com/rails/rails/pull/56877</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`belongs_to` 側が複合外部キー（配列の `foreign_key`）を持ち、その逆側の `has_one` / `has_many` が `inverse_of` から外部キーを導出する場合に `FrozenError` が発生していたバグを修正する PR です。  
凍結済みの配列に対して破壊的メソッド `map!` を呼び出していた実装を、非破壊的な `map { ... }.freeze` に置き換えることでエラーを回避しています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>belongs_to</code> 側が複合外部キー（配列の <code>foreign_key</code>）を持ち、その逆側の <code>has_one</code> / <code>has_many</code> が <code>inverse_of</code> から外部キーを導出する場合に <code>FrozenError</code> が発生していたバグを修正する PR です。  <br>凍結済みの配列に対して破壊的メソッド <code>map!</code> を呼び出していた実装を、非破壊的な <code>map { ... }.freeze</code> に置き換えることでエラーを回避しています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57031] Add test coverage for ActiveModel::Errors#where {#pr-57031}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57031</link>
            <guid>https://github.com/rails/rails/pull/57031</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveModel::Errors#where` に対する専用テストが追加され、属性・タイプ・オプションごとのフィルタリング挙動が網羅的に検証されるようになりました。これにより、既存の公開APIの振る舞いがテストで明示され、将来的なリグレッション防止に役立ちます。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveModel::Errors#where</code> に対する専用テストが追加され、属性・タイプ・オプションごとのフィルタリング挙動が網羅的に検証されるようになりました。これにより、既存の公開APIの振る舞いがテストで明示され、将来的なリグレッション防止に役立ちます。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57032] Add test coverage for IsolatedExecutionState#key?, #delete, and #context {#pr-57032}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57032</link>
            <guid>https://github.com/rails/rails/pull/57032</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveSupport::IsolatedExecutionState` の公開メソッド `#key?`, `#delete`, `#context` に対して、これまで不足していたテストが追加されました。機能追加や仕様変更ではなく、テストカバレッジを補完するためのPRです。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveSupport::IsolatedExecutionState</code> の公開メソッド <code>#key?</code>, <code>#delete</code>, <code>#context</code> に対して、これまで不足していたテストが追加されました。機能追加や仕様変更ではなく、テストカバレッジを補完するためのPRです。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57033] [ci skip] Fix punctuation in Rails autoloading and reloading constants docs {#pr-57033}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57033</link>
            <guid>https://github.com/rails/rails/pull/57033</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
このPRは、Railsガイド「autoloading and reloading constants」のドキュメント内にある句読点の誤りを修正するものです。コードや挙動の変更は一切なく、ドキュメント表現のみが微修正されています。

2. 変更内容の詳細  
- 対象ファイル: `guides/source/autoloading_and_reloading_constants.md`  
- 差分: 1行の修正（1行追加・1行削除の実質置き換え）  
- 具体的な内容は英語ドキュメントの句読点（ピリオドやカンマなど）の誤りを正しい形に修正しただけであり、文意や説明内容自体は変わっていません。  
- 技術的なサンプルコードや設定例などは変更されていません。

3. 影響範囲・注意点  
- 影響範囲:
  - Rails本体のオートローディング/リローディングの挙動には一切影響しません。
  - 生成されるガイド（HTML版など）の表示テキストのみが僅かに変わります。
- 注意点:
  - アプリケーションのアップデート時に、このPRによってコードの修正が必要になるケースはありません。
  - CIを回していない（`[ci skip]`）ことからも分かる通り、あくまでドキュメント上の表記修正であると判断できます。

4. 参考情報 (あれば)  
- PR番号: https://github.com/rails/rails/pull/57033  
- 対象ガイド: Rails Guides – “Autoloading and Reloading Constants”  
  （Zeitwerk ベースの autoloading の説明があるセクションで、概念理解に影響しないレベルの句読点修正です。）]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>このPRは、Railsガイド「autoloading and reloading constants」のドキュメント内にある句読点の誤りを修正するものです。コードや挙動の変更は一切なく、ドキュメント表現のみが微修正されています。</p><p>2. 変更内容の詳細  <br><ul><li>対象ファイル: <code>guides/source/autoloading_and_reloading_constants.md</code>  </li></ul><br><ul><li>差分: 1行の修正（1行追加・1行削除の実質置き換え）  </li></ul><br><ul><li>具体的な内容は英語ドキュメントの句読点（ピリオドやカンマなど）の誤りを正しい形に修正しただけであり、文意や説明内容自体は変わっていません。  </li></ul><br><ul><li>技術的なサンプルコードや設定例などは変更されていません。</li></ul></p><p>3. 影響範囲・注意点  <br><ul><li>影響範囲:</li></ul><br>  - Rails本体のオートローディング/リローディングの挙動には一切影響しません。<br>  - 生成されるガイド（HTML版など）の表示テキストのみが僅かに変わります。<br><ul><li>注意点:</li></ul><br>  - アプリケーションのアップデート時に、このPRによってコードの修正が必要になるケースはありません。<br>  - CIを回していない（<code>[ci skip]</code>）ことからも分かる通り、あくまでドキュメント上の表記修正であると判断できます。</p><p>4. 参考情報 (あれば)  <br><ul><li>PR番号: https://github.com/rails/rails/pull/57033  </li></ul><br><ul><li>対象ガイド: Rails Guides – “Autoloading and Reloading Constants”  </li></ul><br>  （Zeitwerk ベースの autoloading の説明があるセクションで、概念理解に影響しないレベルの句読点修正です。）</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57028] Require Ruby 3.3.1 {#pr-57028}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57028</link>
            <guid>https://github.com/rails/rails/pull/57028</guid>
            <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1–2文で)  
Rails本体および関連コンポーネントの対応Rubyバージョンを「3.3.0 以上」から「3.3.1 以上」に引き上げるPRです。理由は、Ruby 3.3.0 に Rails の一部機能を壊すバグがあり、かつCIで複数パッチバージョンをサポートするコストを負えないためです。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1–2文で)  <br>Rails本体および関連コンポーネントの対応Rubyバージョンを「3.3.0 以上」から「3.3.1 以上」に引き上げるPRです。理由は、Ruby 3.3.0 に Rails の一部機能を壊すバグがあり、かつCIで複数パッチバージョンをサポートするコストを負えないためです。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57022] Fix `insert_all` and `upsert_all` log messages for anonymous classes {#pr-57022}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57022</link>
            <guid>https://github.com/rails/rails/pull/57022</guid>
            <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`insert_all` / `upsert_all` 実行時のログ出力で、匿名クラス（anonymous class）の場合でも人間が読めるモデル名が出るように修正したPRです。これにより、例えば `AnonymousBook Bulk Insert` / `AnonymousBook Bulk Upsert` のような分かりやすいログメッセージになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>insert_all</code> / <code>upsert_all</code> 実行時のログ出力で、匿名クラス（anonymous class）の場合でも人間が読めるモデル名が出るように修正したPRです。これにより、例えば <code>AnonymousBook Bulk Insert</code> / <code>AnonymousBook Bulk Upsert</code> のような分かりやすいログメッセージになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57010] Fix invalid HTML in routing error template {#pr-57010}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57010</link>
            <guid>https://github.com/rails/rails/pull/57010</guid>
            <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails のルーティングエラー用レスキューテンプレート（routing_error.html.erb）の HTML 構造が W3C/WHATWG の仕様上不正だったため、`<p>` タグ内からブロック要素（`<h2>` / `<ol>`）を取り除き、正しい HTML 構造になるように修正した PR です。  
これにより、ブラウザやツールによっては崩れていた DOM 構造が、仕様に沿った形で安定して解釈されるようになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails のルーティングエラー用レスキューテンプレート（routing_error.html.erb）の HTML 構造が W3C/WHATWG の仕様上不正だったため、<code><p></code> タグ内からブロック要素（<code><h2></code> / <code><ol></code>）を取り除き、正しい HTML 構造になるように修正した PR です。  <br>これにより、ブラウザやツールによっては崩れていた DOM 構造が、仕様に沿った形で安定して解釈されるようになります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57017] LogSubscriber: Avoid repeated `respond_to?` calls {#pr-57017}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57017</link>
            <guid>https://github.com/rails/rails/pull/57017</guid>
            <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
`ActiveSupport::LogSubscriber` が、イベントハンドラ呼び出し時に毎回 `respond_to?` を実行していたのをやめ、事前に「どのメソッドが存在するか」をキャッシュすることでオーバーヘッドを削減する変更です。結果としてログ購読処理のパフォーマンスがわずかに向上し、多数の通知が発生する環境での無駄なメソッド存在チェックが減ります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br><code>ActiveSupport::LogSubscriber</code> が、イベントハンドラ呼び出し時に毎回 <code>respond_to?</code> を実行していたのをやめ、事前に「どのメソッドが存在するか」をキャッシュすることでオーバーヘッドを削減する変更です。結果としてログ購読処理のパフォーマンスがわずかに向上し、多数の通知が発生する環境での無駄なメソッド存在チェックが減ります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57020] Fix lazy ivars causing different model shapes {#pr-57020}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57020</link>
            <guid>https://github.com/rails/rails/pull/57020</guid>
            <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveRecord::Base のサブクラスで、インスタンス変数が「遅延で」定義されることによってクラスごとに異なるオブジェクトシェイプ（shape）が発生していた問題を解消し、すべてのモデルクラスで同一の shape になるようにした PR です。  
これにより、Lobsters ベンチマークにおいて ActiveRecord モデルの shape が 3 種類から 1 種類に減り、Ruby VM の最適化（JIT など）に有利になります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveRecord::Base のサブクラスで、インスタンス変数が「遅延で」定義されることによってクラスごとに異なるオブジェクトシェイプ（shape）が発生していた問題を解消し、すべてのモデルクラスで同一の shape になるようにした PR です。  <br>これにより、Lobsters ベンチマークにおいて ActiveRecord モデルの shape が 3 種類から 1 種類に減り、Ruby VM の最適化（JIT など）に有利になります。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57008] Remove unused requires from ActiveSupport::JSON::Decoding {#pr-57008}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57008</link>
            <guid>https://github.com/rails/rails/pull/57008</guid>
            <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
ActiveSupport::JSON::Decoding 内で、現在は一切使われていない `require` を2つ削除したPRです。機能追加や挙動変更は行われておらず、不要な依存を整理するリファクタリングです。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>ActiveSupport::JSON::Decoding 内で、現在は一切使われていない <code>require</code> を2つ削除したPRです。機能追加や挙動変更は行われておらず、不要な依存を整理するリファクタリングです。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57000] Batch SQL statements when creating tables. {#pr-57000}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57000</link>
            <guid>https://github.com/rails/rails/pull/57000</guid>
            <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
このPRは、`create_table` 時に発行する複数の SQL を一括送信（バッチ）することで、特に巨大なスキーマを持つアプリケーションで `db:schema:load` などのパフォーマンスを大幅に改善する変更です。PostgreSQL で 1000+ テーブルのケースでは、スキーマロードが約 120 秒から約 25 秒まで短縮された事例が示されています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>このPRは、<code>create_table</code> 時に発行する複数の SQL を一括送信（バッチ）することで、特に巨大なスキーマを持つアプリケーションで <code>db:schema:load</code> などのパフォーマンスを大幅に改善する変更です。PostgreSQL で 1000+ テーブルのケースでは、スキーマロードが約 120 秒から約 25 秒まで短縮された事例が示されています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#56998] Use `flat_map` in ContentSecurityPolicy {#pr-56998}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-56998</link>
            <guid>https://github.com/rails/rails/pull/56998</guid>
            <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails の `ContentSecurityPolicy` 実装において、`validate` 内で `flat_map` を使うことで配列のフラット化処理を整理し、`build_directive` の戻り値を `validate` の戻り値に依存しないようにする小さなリファクタリングが行われました。挙動は変えずに、コードの明確性と保守性を高める変更です。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails の <code>ContentSecurityPolicy</code> 実装において、<code>validate</code> 内で <code>flat_map</code> を使うことで配列のフラット化処理を整理し、<code>build_directive</code> の戻り値を <code>validate</code> の戻り値に依存しないようにする小さなリファクタリングが行われました。挙動は変えずに、コードの明確性と保守性を高める変更です。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57003] Fix PostgreSQL column equality for generated types {#pr-57003}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57003</link>
            <guid>https://github.com/rails/rails/pull/57003</guid>
            <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgreSQL の generated column（生成列）の「格納型（stored/virtual）」が異なる場合に、`PostgreSQL::Column` の `==` と `hash` の挙動が食い違っていたバグを修正する PR です。`==` と `hash` が同じ情報（`generated` 属性）に基づいて判定されるようにし、Hash/Set での不整合を解消しています。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgreSQL の generated column（生成列）の「格納型（stored/virtual）」が異なる場合に、<code>PostgreSQL::Column</code> の <code>==</code> と <code>hash</code> の挙動が食い違っていたバグを修正する PR です。<code>==</code> と <code>hash</code> が同じ情報（<code>generated</code> 属性）に基づいて判定されるようにし、Hash/Set での不整合を解消しています。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#57001] Fix PostgresqlDbConsoleTest reports Environment leak detected {#pr-57001}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-57001</link>
            <guid>https://github.com/rails/rails/pull/57001</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
PostgresqlDbConsoleTest で環境変数（ENV）のリークを検出する `LeakChecker` とのライフサイクルの噛み合わせ不良によりテストが失敗していた問題を、ENV のバックアップ／復元方法を変更することで修正した PRです。テストコードのみの変更で、本体の挙動には影響しません。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>PostgresqlDbConsoleTest で環境変数（ENV）のリークを検出する <code>LeakChecker</code> とのライフサイクルの噛み合わせ不良によりテストが失敗していた問題を、ENV のバックアップ／復元方法を変更することで修正した PRです。テストコードのみの変更で、本体の挙動には影響しません。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#56994] Drop workaround for mail gem version < 2.8 {#pr-56994}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-56994</link>
            <guid>https://github.com/rails/rails/pull/56994</guid>
            <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Action Mailbox が依存する mail gem の下限バージョンがすでに 2.8 以上になっているため、mail < 2.8 向けに入っていたワークアラウンド（互換コード）を削除した PR です。結果として、コードがシンプルになり、サポート対象が実質的に mail 2.8 以降に揃えられました。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Action Mailbox が依存する mail gem の下限バージョンがすでに 2.8 以上になっているため、mail < 2.8 向けに入っていたワークアラウンド（互換コード）を削除した PR です。結果として、コードがシンプルになり、サポート対象が実質的に mail 2.8 以降に揃えられました。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[#56980] Bump bundler from 4.0.6 to 4.0.8 {#pr-56980}]]></title>
            <link>https://yuheinakasaka.github.io/rails-pr-digest/monthly/2026-03#pr-56980</link>
            <guid>https://github.com/rails/rails/pull/56980</guid>
            <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[1. 概要 (1-2文で)  
Rails リポジトリで使用している Bundler のバージョンを 4.0.6 から 4.0.8 に更新した PRです。これにより、`bundle install` などで利用される Bundler が最新のパッチバージョンになります。]]></description>
            <content:encoded><![CDATA[<p>1. 概要 (1-2文で)  <br>Rails リポジトリで使用している Bundler のバージョンを 4.0.6 から 4.0.8 に更新した PRです。これにより、<code>bundle install</code> などで利用される Bundler が最新のパッチバージョンになります。</p>]]></content:encoded>
        </item>
    </channel>
</rss>