皆さん金曜日をいかがお過ごしでしょうか。 この私VipulからRailsのコードベースにあった最新の変更をお届けします。

[CVE-2023-28362] 利用者により与えられたredirect_toへの値によるXSSの可能性
お済みでなければご自身のRailsアプリケーションを最新版に更新してください! 利用者により与えられた値を使う場合のredirect_toにXSS脆弱性の可能性があった件について、セキュリティ修正を当てるRailsバージョン7.0.5.16.1.7.4がリリースされました。 修正の対象はRailsのredirect_toメソッドで、HTTPヘッダーの値として非合法な文字を含む値を与えることができていました。 この脆弱性はCVE識別子CVE-2023-28362に割り当てられました。

Rails 7.0.6がリリースされました!
Rails 7.0.6 がリリースされました。 本リリースには、7.0.4リリース以降の直近数箇月にバックポートされた多くのバグ修正が含まれています。

config.autoload_libを導入
新メソッドconfig.autoload_lib(ignore:)により、libフォルダから簡単に自動読み込みすることができるようになりました。

 # config/application.rb
 config.autoload_lib(ignore: %w(assets tasks))

大抵、libディレクトリには自動読み込みまたは積極読み込みされるべきではない副ディレクトリがあります。 この新メソッドではどの副ディレクトリを自動読み込みするかを必要に応じて指定できます。

この新機能についての詳しいことは自動読み込みの手引きをお読み下さい。

config.autoload_lib_onceを導入

メソッドconfig.autoload_lib_once(ignore:)は上で導入したconfig.autoload_libと似ていますが、libをconfig.autoload_once_pathsに追加する点だけが異なります。

config.autoload_lib_onceを呼び出すことで、アプリケーションの初期化の部分であったとしてもlib中のクラスとモジュールが自動読み込みされるようになりますが、再読み込みされることはありません。

不達Eメールをdeliver_nowで送れるようになりました
この変更ではbouse_now_withActionMailboxに追加しています。 不達Eメールをメーラーキューを通すことなく直ちに送りたい場合に便利です。

 # 不達Eメールをキューに追加
MyMailbox.bounce_with MyMailer.my_method(args)

# Eメールを直ちに配送
MyMailbox.bounce_now_with MyMailer.my_method(args)

railties:install:migrations用のDATABASEオプション
この変更ではDATABASE新規オプションをrailties:install:migrationsタスクに追加します。

これによりエンジンでrails railties:install:migrationsを走らせる際にどのデータベースマイグレーションが複製されるべきかを指定できるようになりました。

$ rails railties:install:migrations DATABASE=animals

以前非決定的に暗号化されたデータを復号するActive Recordの暗号の対応
この変更ではSHA1ハッシュダイジェストで非決定的に暗号化されたデータを復号する対応が追加されました。

SHA1ハッシュダイジェストで非決定的に暗号化されたデータの復号に対応するActive Recordの新規オプションを追加しています。

Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = true

大域的なダイジェストクラスの代わりにSHA-1が使われている場合に7.0から7.1に更新する際の問題が対処されています。

ActiveSupport::Deprecationに:report動作を追加
この変更ではActiveSupport::Deprecation:report動作を追加します。

config.active_support.deprecation = :reportはエラー報告器を使って非推奨の警告をActiveSupport::ErrorReporterに報告するよう設定します。

これは実運用で発生した非推奨の報告について、ただログに流れたままにする代わりに、不具合管理表に報告させるようにするのに便利です。

変更の全一覧についてはこちらをご覧下さい この1週間に25名の方々からRailsのコードベースに貢献していただきました!

良い金曜日をお過ごし下さい!また次回をお楽しみに :-)

購読するとこうした更新をメールで受け取れます。