[rails/website] This Week in Rails 2026年1月16日号の追加
概要
Rails公式サイトに「This Week in Rails」の2026年1月16日号が追加されました。今回の号では、ActiveJobのretry_onの改善、CSRF保護の調整、PostgreSQLアダプターの拡張性向上など、重要な変更が紹介されています。
主要なトピック
1. エラー情報を活用したリトライ戦略
#56601では、retry_onのwait procがエラーオブジェクトを第2引数として受け取れるようになりました。これにより、エラーの内容に応じた動的なリトライ戦略が実装可能になります。
class RemoteServiceJob < ActiveJob::Base
retry_on CustomError, wait: ->(executions, error) { error.retry_after || executions * 2 }
def perform
# ...
end
end
この変更は後方互換性を維持しており、アリティ0または1のprocは従来通り実行回数のみを受け取ります。エラーオブジェクトからRetry-Afterヘッダーの値を取得して待機時間を決定するなど、より柔軟なリトライ制御が可能になります。
2. HTTP環境でのCSRF保護の改善
#56580により、HTTP接続かつSSL強制が無効な環境でSec-Fetch-Siteヘッダーが欠落している場合でもリクエストが許可されるようになりました。開発環境やローカルインストール環境での利便性が向上します。なお、Originチェックは常に実行されます。
3. X-XSS-Protectionヘッダーの削除
#56564で、X-XSS-Protectionヘッダーがデフォルトヘッダーから削除されました。現代のブラウザではこのヘッダーがサポートされなくなっており、むしろセキュリティリスクとなる可能性があるための措置です。
4. protect_from_forgeryの明示的な戦略指定
#56561では、引数なしでprotect_from_forgeryを呼び出した場合の動作が非推奨となりました。デフォルトでは:null_sessionが使用されますが、config.action_controller.default_protect_from_forgeryが有効な場合は:exceptionが使用されるという不整合を解消するための変更です。
# 非推奨
protect_from_forgery
# 推奨: 明示的に戦略を指定
protect_from_forgery with: :exception
5. PostgreSQLカスタム型マッピングのAPI追加
#56496により、PostgreSQLに独自の型を追加する際の公式APIが提供されました。PostGISやpgvectorなどのGemは、これまでアダプターをモンキーパッチする必要がありましたが、PostgreSQLAdapter.register_type_mappingメソッドによりクリーンな実装が可能になります。
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.register_type_mapping(
'vector',
'Pgvector::Type::Vector'
)
6. 設定オブジェクトのinspect改善
#56471で、設定オブジェクトのinspectメソッドが改善され、センシティブな情報が表示されなくなりました。従来はENV変数や認証情報がすべて露出していましたが、現在はキー名のみが表示されます。
# 変更前
Rails.application.credentials
#<ActiveSupport::CombinedConfiguration:0x... @configurations=[... "SOME_SECRET" => "secret_value" ...]>
# 変更後
Rails.application.credentials
#<ActiveSupport::CombinedConfiguration:0x... @configurations=[... "SOME_SECRET" => "[FILTERED]" ...]>
これにより、デバッグ時やログ出力時に機密情報が意図せず露出するリスクが低減されます。
まとめ
今週のアップデートでは、セキュリティ、開発者体験、拡張性の向上に焦点が当てられています。特にエラー情報を活用したリトライ戦略やPostgreSQLアダプターの拡張性向上は、実務での柔軟性を大きく向上させる変更です。