LoginSignup
1
0

More than 5 years have passed since last update.

[WIP]Rails.application.eager_load!

Last updated at Posted at 2019-03-06

config.eager_load

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

Rails.application.eager_load!

config.eager_loadの値にによらず、クラスの存在確認をできるようにしたい場合に使用する。
config.eager_load = true と同じロード処理をその場で実行する。

使用状況:gem側で強制的にクラス存在確認を有効にしたい時

参考

Railsの config.eager_load はModelやControllerを読み込むタイミングを制御できる

const_defined? メソッド
クラスやモジュールの中に定数があるかどうかを調べる

Ruby on Railsのeager_load_pathsの仕組みを紐解く。

5 autoload_pathsとeager_load_paths

Railsにはファイルを探索する$LOAD_PATHに似た、ディレクトリのコレクションがあります。このコレクションはautoload_pathsと呼ばれており、デフォルトで以下が含まれます。

  • 起動時にアプリケーションやエンジンのappディレクトリ以下に存在するすべてのサブディレクトリ(app/controllersなど)。app以下に置かれるapp/workersなどのカスタムディレクトリは、すべてautoload_pathsに自動的に属するので、デフォルトのディレクトリである必要はない。
  • アプリケーションやエンジンのすべてのapp/*/concerns第2サブディレクトリ。
  • test/mailers/previewsディレクトリ。

eager_load_pathsは、初期段階では上のappパスになります。

通常、ファイルがeager_load設定やcache_classes設定に応じて自動読み込みされる方法は、developmentモード/productionモード/testモードでそれぞれ変わります。

autoload_pathsは初期化中に算出され、キャッシュされます。ディレクトリ構造が変更された場合、変更を反映するにはアプリケーションを再起動する必要があります。

1
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
1
0