tldr; Railsのアップデートするとき、config.load_defaults x.x
に対応した new_framework_defaults_y_y.rb
に書かれた内容をコメントインして有効にしないと意味ないので注意。
たとえば Rails 7.0 -> 7.1 にアップデートするとき
config/application.rb
config.load_defaults 7.0
して、7.1の新設定は new_framework_defaults_7_1.rb
でひとつずつコメントインしていく、というのがオフィシャルの手順だが、このコメントインしていく作業を忘れると、そのrailsは 7.0 のデフォルト設定で動いている。 7.1 の主にBREAKINGな設定は有効になっていない
これを忘れたまま 7.2 にアップデートしようとして config.load_defaults 7.1
すると、そのときに初めて 7.1 の挙動が現れるので大変なことになる。
load_defaults
の実装を読んでみる
config.load_defaults
の実装はシンプルで、 new_framework_defaults_x_x.rb
に記載されてる内容をそのまま有効にするものとなっている。
rails 7.1 の load_defaults の実装
railities/lib/rails/application/configuration.rb
def load_defaults(target_version)
case target_version.to_s
# 省略
when "7.1"
load_defaults "7.0"
self.add_autoload_paths_to_load_path = false
self.precompile_filter_parameters = true
self.dom_testing_default_html_version = defined?(Nokogiri::HTML5) ? :html5 : :html4
if Rails.env.local?
self.log_file_size = 100 * 1024 * 1024
end
# ...
new_framework_defaults_7_1.rb.tt と比べてみると同じだとわかる