Devise 5.0.4がリリースされ、セッションタイムアウト時の非GETリクエストで`Referer`ヘッダーを検証せずリダイレクト先として使用していたオープンリダイレクト脆弱性(GHSA-jp94-3292-c3xv)が修正されました。`lib/devise/version.rb`のバージョンを`5.0.3`から`5.0.4`へ更新するリリースコミットです。
factory_bot v6.6.0 がリリースされました。`factory_bot.before_run_factory` インストルメンテーションイベントの追加、リンティングトランザクションによる ActiveRecord ライフサイクル干渉の修正、`DefinitionProxy#method_missing` のブロック転送修正が主な変更点です。あわせてリリースプロセスの自動化と gem プッシュへの MFA 必須化も実施されています。
`Propshaft::Server`が配信するCSSおよびHTMLアセットのContent-Typeヘッダーに`; charset=utf-8`が付与されるようになりました。Chromeの文字コード判定バグにより発生していた非ASCII文字(en-dashなど)の文字化けを防ぐための修正で、`Propshaft::Asset`に`content_type_with_charset`メソッドが追加されています。`text/javascript`(RFC 9239準拠)や`text/xml`(エンコーディング宣言との競合回避)は対象外とする精密な設計が採用されています。
GitHub Security Advisory(GHSA)識別子がコントリビューター名として誤検知される問題を修正。既存のCVEパターンと同様に `/\AGHSA-[\w-]+\z/i` を false positives リストに追加し、セキュリティアドバイザリIDがクレジットページに表示されないようにしました。
Solid Queueのスケジューラーが動的スケジュール機能に対応しました。`SolidQueue.schedule_recurring_task` / `unschedule_recurring_task` APIを通じて、静的設定ファイルを変更せずに実行時でRecurringTaskを追加・削除できます。`dynamic_tasks_enabled: true` のオプトイン設計により、既存の静的スケジュール構成への影響はありません。
`@rails/request.js` の `FetchRequest` クラスに `priority` オプションのサポートが追加されました。`priority: 'high'` や `priority: 'low'` を渡すだけでブラウザのFetch APIにリクエストの優先度ヒントを渡せるようになります。デフォルト値は設定せず `undefined` を透過させることで、ブラウザ固有のデフォルト動作を尊重する設計が採用されています。
OmniAuthがBundler 2.0以降の全バージョンとRuby 4.0に対応。gemspecのBundler依存関係を `~> 2.0` から `>= 2.0` に緩和し、CIマトリクスにRuby 4.0を追加しました。
Solid CacheのCI環境において、Rubocopの実行環境をRuby 3.4.1からRuby 4.0に更新。最新のRubyバージョンでのコード品質チェックが可能になります。
Rails 8.1以降の`ActionDispatch::RemoteIp`実装変更に対応するため、WebConsoleに`first_non_proxy`メソッドを追加。既存の`filter_proxies`を残すことで、新旧両バージョンのRailsとの互換性を維持。
20年間維持されてきた`sessid`カラムのフォールバック機能を廃止予定化。本番環境でのSchemaCache効率化を実現し、セッションテーブルへの不要なクエリを削減します。
rails-docs-server の更新フックが拡張され、bin スクリプトが自動的に ~/bin にインストールされ、PATH に追加されるようになりました。これにより、スクリプトをフルパスなしで実行でき、運用性が向上します。
action_push_nativeのRails最小バージョン要件を8.0から7.2に引き下げ。Rails 7.2がメンテナンス期間内であることを考慮し、より広い範囲のプロジェクトでの採用を可能にする変更。gemspecとマイグレーションファイルのバージョン指定が統一的に更新されています。