やったこと
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