概要
rails new
直後のconfig/initializers
配下の初期化ファイルの数が多くユーザの認知的負荷につながっていました。
その中には必ずしもすべてのアプリケーションに必要とは限らない設定や、過去のアップグレードの中で既に不要になっている可能性がある設定が存在していたため、今回ファイル構成が見直され不要あったと判断されたファイルが削除されました。
rails7.0以前
バージョン7.0以前のrailsではrails new
時にアプリケーションの初期設定のファイルがconfig/initializers
配下に10ファイル作成されていました。
$ rails -v
Rails 6.1.4.4
$ rails new sample_app
$ tree config/initializers/
config/initializers/
├── application_controller_renderer.rb
├── assets.rb
├── backtrace_silencers.rb
├── content_security_policy.rb
├── cookies_serializer.rb
├── filter_parameter_logging.rb
├── inflections.rb
├── mime_types.rb
├── permissions_policy.rb
└── wrap_parameters.rb
rails7.0
rails7.0では認知的負荷を低減するために初期化ファイルの構成をシンプルにするため、初期化設定の一部をフレームワーク内のデフォルトの設定として定義することでrails new
時に生成されるconfig/initializers
配下ファイルの数を10ファイルから5ファイルに減らしています。
$ rails -v
Rails 7.0.0
$ rails new sample_app
$ tree config/initializers/
config/initializers/
├── assets.rb
├── content_security_policy.rb
├── filter_parameter_logging.rb
├── inflections.rb
└── permissions_policy.rb
削除されたファイルの解説
削除された初期化ファイルは以下の5つです。
- application_controller_renderer.rb
- backtrace_silencers.rb
- cookies_serializer.rb
- mime_types.rb
- wrap_parameters.rb
各ファイルについての役割は以下の通りです。
application_controller_renderer.rb
コントローラーの以外でviewテンプレートをrenderする際のデフォルト設定値を指定します。
多くのアプリケーションでは不要な設定であることと、少なくともrails new
直後の状態では不要なため削除されたようです。
対応されたPR: https://github.com/rails/rails/pull/42538
backtrace_silencers.rb
任意の処理でbacktrace表示を無効化する設定ファイルです。
削除された理由についての詳細は書かれていませんが、このファイルが存在することにより上記の機能が提供されるメリットよりもinitializersファイルが増えてしまうことによる認知的負荷のデメリットの方が大きいと判断がされたようです。
対応されたPR: https://github.com/rails/rails/pull/43237
cookies_serializer.rb
cookieのシリアライザの方式を指定するファイルです。バージョン4.1以降のrailsアプリではデフォルトで:marshal
が定義されrails new
時に作成されるconfig/initializers/cookies_serializer.rbによっての値を:json
に上書きされていました。
背景としては、過去rails4.0から4.1へのバージョンアップの際に、互換性を維持する為デフォルトの設定は変更せず、新しく作るアプリケーションのみ変更するためにconfig/initializers/cookies_serializer.rbで上書きしてた為です。
rails7になりinitializersファイルを減らすため、デフォルト値が:json
に変更されconfig/initializers/cookies_serializer.rbは不要になりました。
対応されたPR: https://github.com/rails/rails/pull/42538
mime_types.rb
mime typeの追加を行うファイルです。アプリケーション固有のカスタムmime typeをすることも可能です。
削除された理由についての詳細は書かれていませんが、このファイルが存在することにより上記の機能が提供されるメリットよりもinitializersファイルが増えてしまうことによる認知的負荷のデメリットの方が大きいと判断がされたようです。
対応されたPR: https://github.com/rails/rails/pull/43237
wrap_parameters.rb
これまでファイルの中で定義されていた以下の設定値がデフォルトの設定になりこのファイルは不要になりました。
ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end
wrap_parameter自体についてはこちらの記事でも書いています。