LoginSignup
0
0

Rails のアップデートで、 new_framework_defaults_x_x.rb をコメントインし忘れてないですか?

Posted at

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 と比べてみると同じだとわかる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0