如果在服务器以开发模式运行时检测到文件更改,Rails 会擦除类并重新加载它们。我有以下结构:
app/models/algorithms/algorithms.rb (Module Algorithms)
app/models/algorithms/algorithm.rb (Base Class Algorithms::Algorithm)
app/models/algorithms/algorithm_a.rb (Extended Classes Algorithms::AlgorithmA)
app/models/algorithms/algorithm_b.rb (Extended Classes Algorithms::AlgorithmB)
app/models/algorithms/algorithm_c.rb (Extended Classes Algorithms::AlgorithmC)
这些具体的算法类不是由控制器实例化,而是在 Sidekiq 工作类中实例化app/workers
,这意味着通常不在 Rails 进程内,而是在 Sidekiq 进程内。
现在,如果我对任何文件(例如控制器)进行更改,Rails 会擦除这些类并重新加载它们。这很好,但它不会重新加载整个app/models/algorithms
目录。
为什么呢?我如何配置它以每次都急切地加载所有内容?我已经设置config.eager_load
为true
. 直到我在一个 pry session 中一个接一个地引用每个类,然后再一个一个地再次加载,问题才解决。