控制器,模型等从active_support / dependencies.rb加载。但是通过控制器和模型的代码在哪里,并请求dependencies.rb加载它们中的每一个?
答案 0 :(得分:1)
如果将以下代码放在控制器文件中(最好是在类之外):
Rails.logger.info("*"*80)
Rails.logger.info(caller)
Rails.logger.info("*"*80)
在生产模式下启动应用程序,您可以看到初始化调用的完整堆栈跟踪,导致控制器急切加载。在开发过程中,控制器并不急于加载。
最关键的一行检查Rails配置并决定是否急于加载所有文件。
railties-3.2.11/lib/rails/application/finisher.rb:53
其中称为栏杆eager_load!方法