7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

アプリの設定ファイルを見ていて config/application.rb に以下のような記述が出てきました。

application.rb
config.load_defaults X.Y

この load_defaults が何をしているのか分からなかったため、調べてまとめてみました。

この記事では、load_defaults の正体や、Railsのバージョン指定との違いについて、初心者の方にもわかりやすく解説していきます!

load_defaults とは

config.load_defaultsはターゲットバージョンとそれ以前のすべてのバージョンのデフォルトの設定値を読み込みます。
ref: 3.1 Railsバージョンごとのデフォルト値

誤解を恐れずに、ざっくりいうと load_defaults「Rails がバージョンアップで変わった設定を、自分で選んで使えるようにするためのスイッチ」 です。

load_defaults の指定バージョンと gem での指定バージョンの違い

以前自分が混乱していたのは、この二つのバージョンば なぜ一致しないのか
という点で、混乱していました。

Gemfile
gem 'rails', 'x.y.z'
application.rb
config.load_defaults X.Y

しかしこの二つは、全く別の意味を持っています。

指定方法 意味
gem 'rails' Rails本体のバージョン。つまり、使える機能(クラスやメソッド)のバージョン
config.load_defaults デフォルト設定のバージョン。つまり、Railsが用意している設定値の基準となるバージョン

なぜ分かれている?

Ruby on Rails では いきなり設定まで全部変えるとアプリが壊れるリスクがあるため、
設定の切り替えは開発者が明示的に行う設計 になっています。

例えば、Rails 8 を使っていても、 load_defaults 7.2 であれば、 Rails 7.2までの設定でアプリが動くということになります。

注意点・補足

load_defaults に将来のバージョンを指定すること(例:Rails 7 で load_defaults 8.0)はできません。
これは、 load_defaults は あらかじめ定義された設定しか読み込めないからです。

詳しくどうなってるかみたい方は以下で実際にコードを見てください。
また、new_framework_defaults_x_y.rb を使用することで段階的なアップデートが可能です。

おわりに

Rails のバージョンアップはコードだけでなく設定にも注意が必要です。
load_defaultsnew_framework_defaults_x_y.rb を理解しておくと、より安全・スムーズにアップデートできます。

将来的に config.load_defaults を変更する前に、新しい設定項目を個別に確認・適用して、テストが通ることを確認する運用がオススメです。

参考文献

7
11
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
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?