Rails の config で eager_load を設定してみる
Ruby Ruby on Rails
Published: 2019-07-13

やったこと

Rails の config で eager_load を設定してみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

config.eager_load: trueにすると、config.eager_load_namespacesに登録された事前一括読み込み(eager loading)用の名前空間をすべて読み込みます。ここにはアプリケーション、エンジン、Railsフレームワークを含むあらゆる登録済み名前空間が含まれます。

共通で使う、下記のようなファイルを作成します。

app/models/hogehoge/abc.rb

module Hogehoge
  class Abc < Abc
  end
end

config.eager_load = false の時

$ rails c
irb(main):001:0> Object.const_defined?('Hogehoge::Abc')
=> false
irb(main):002:0> Hogehoge::Abc
=> Hogehoge::Abc
irb(main):003:0> Object.const_defined?('Hogehoge::Abc')
=> true

config.eager_load = true の時

$ rails c
irb(main):001:0> Object.const_defined?('Hogehoge::Abc')
=> true

参考