Rails4 と Rails5 とで eager_load_paths の内容に差異があることを知
りました。

Rails5 では app 以下の全ての concerns ディレクトリや channels ディ
レクトリが追加されています。

以下、Rails4 と Rails5 とで実装箇所を追ってみました。

Rails-4.2.10

eager_load_paths を返すメソッド
Rails::Engine::Configuration#eager_load_paths

eager_load_paths の構築開始。Rails5 と違いあり
Rails::Engine::Configuration#paths

Rails::Paths::Root#add

Rails::Paths::Path#initialize

Rails::Paths::Path#eager_load!
ここまでで eager_load_paths の構築完了

Rails::Paths::Root#eager_load
結果を返す

Rails-5.2.0

eager_load_paths を返すメソッド
Rails::Engine::Configuration#eager_load_paths

eager_load_paths の構築開始。Rails4 と違いあり
Rails::Engine::Configuration#paths

Rails::Paths::Root#add

Rails::Paths::Path#initialize

Rails::Paths::Path#eager_load!
ここまでで eager_load_paths の構築完了

Rails::Paths::Root#eager_load
結果を返す

まとめ

Rails の eager_load_paths を調べました。app 以下が再帰的に追加され
るだけかと思ってましたが、調べたら凝ったことをしていました。config
以下も追加されるのも、なるほど…といった感じでした。

なお、eager_load は本番環境では通常有効にしないので、以上は開発環
境の話です。

念のためですが、現在の Rails は autoload_paths は非奨励ですので、
ご注意を。

参考情報: