https://github.com/rails/rails
Rails をコンテナ環境で実行する際、エラーページの「エディタで開く」リンクが動作しない問題を解決する `RAILS_HOST_APP_PATH` 環境変数が追加されました。コンテナ内部のパスをホストマシンのパスに変換することで、devcontainer や Docker 環境でもエディタ連携が正常に機能するようになります。
Rails内の56個のクラスで個別実装されていた`inspect`メソッドを、Ruby 4.0の`instance_variables_to_inspect`フックを活用する統一的な実装に置き換え。`ActiveSupport::InspectBackport`モジュールにより旧バージョンでも同じインターフェースを提供し、秘密鍵の保護などの既存の意図を保ちながらコードの重複を排除。
Active Recordの`Base.new`を最適化し、STIを使用しないモデルで不要なSTIチェックを条件付きで除去。Ruby 4.0の「fast path allocation」を活用して、非STIモデルのオブジェクト生成が15~17%高速化されました。
Sidekiq 8.1.1で非推奨となった`sidekiq/testing/inline`への対応。`respond_to?`による判定で新旧両方のAPIをサポートし、バージョン間の互換性を維持。
SQLite3アダプタで生成カラムの等価性判定が修正され、storedとvirtualの異なるタイプが正しく区別されるようになりました。virtual?からgenerated_typeへの比較変更により、eql?/hash契約違反が解消されます。
遅延トランザクション実体化において、BEGIN/SAVEPOINTの実行時間が二重計上されていた問題を修正。トランザクションの実体化をインストルメンテーション前に移動することで、各SQLイベントが独立した時間範囲を持つようになり、パフォーマンス計測の正確性が向上しました。
フレームワーク内部イベントのペイロードフィルタリングを無効化し、config.filter_parametersがSQLクエリ名などのメタデータを誤って隠す問題を解決。EventReporterにfilter_payload:オプションを追加し、StructuredEventSubscriberで一括適用。
DateとTimeオブジェクトに、現在の週・月・年に属するかを判定する`this_week?`、`this_month?`、`this_year?`メソッドが追加されました。既存の`today?`などと同様のインターフェースで、時間範囲判定をシンプルに記述できます。
クライアントIPアドレスの取得処理を最適化し、約3倍の性能向上を実現。配列操作の削減と早期リターンの導入により、本番環境でのボトルネックを解消しました。
RailsのCI環境におけるrailtiesテストの並列実行を最適化するため、各テストファイルの推定実行時間を実測値に基づいて再調整。データベーステストの過大評価を是正し、設定・コンソールテストの過小評価を修正することで、ワーカー間の負荷分散を改善しました。
#56201で導入されたロードフック保護機能に含まれていた2箇所のタイポ(eary→early、appliction→application)を修正。設定名、ドキュメント、エラーメッセージが正しい表記に統一されました。
Rails 8.1で、core_ext/benchmark.rbの非推奨警告を削除し、空のファイルとして維持する変更。既存コードとの互換性を保ちつつ、将来の拡張の余地を残す設計判断。
一度非推奨となった `core_ext/benchmark.rb` が「silent shim」として復活。現在Benchmark拡張を持たないものの、将来の拡張点として保持する設計判断が示されました。
Active Recordの暗号化機能の内部実装である`AutoFilteredParameters`クラスを`:nodoc:`でマークし、公開APIドキュメントから除外。フィルタパラメータ管理の統合に向けた段階的な削除プロセスの第一段階として、将来の実装削除時の影響を最小化する準備を整えています。
`ActiveModel::Attributes`モジュールの遅延読み込みの問題を修正し、`rails app:update`などのコマンド実行時間を短縮しました。autoloadの定義位置を実モジュール内に移動することで、意図しない即座読み込みを防いでいます。
16年前に追加され未使用だった `open-uri` requireを `rails/generators/app_base.rb` から削除。`rails app:update` の起動時間短縮に貢献。
Active Recordの`in_batches`で`use_ranges: true`とlimitを組み合わせた際、limitがバッチサイズの倍数でない場合に負のLIMIT値が発生する不具合を修正。`values_size`の計算ロジックを改善し、残件数管理を正確にすることで、データベースエラーを回避できるようになりました。
Rails 7.2.3で無効なHTTPメソッドのリクエストが500エラーになっていた問題を修正。`DebugExceptions`ミドルウェアで`request.head?`を`request.raw_request_method`に置き換えることで、例外の二重発生を防ぎ、適切な405 Method Not Allowedステータスを返すようにしました。
Kamalのデプロイ設定テンプレートで参照されるMySQL Dockerイメージが8.0から8.4に更新されました。新規プロジェクト生成時のデフォルト設定の更新であり、既存プロジェクトへの影響はありません。
PostgreSQLとSQLite3のColumnクラスにおいて、#hashメソッドが存在しないインスタンス変数(@virtual)を参照していた問題を修正。PostgreSQLでは@generated、SQLite3では@generated_typeという正しいインスタンス変数に置き換えることで、Columnオブジェクトのハッシュ値計算が正しく動作するようになりました。