我尝试过大多数解决方案,例如require_dependency
,在autoload
中添加application.rb
,并启用lib
文件夹,但仍然没有骰子。
以下是我的应用程序的设置方式:
我在lib/index_tank_searcher.rb
:
class IndexTankSearcher < Spree::Core::Search::Base
def method
end
end
我在Spree::Config.searcher_class = IndexTankSearcher
中有config/intializers/spree.rb
。
关于如何确保index_tank_searcher.rb
自动重新加载而不重新启动服务器的任何想法?
答案 0 :(得分:2)
重新加载类不会改变现有的类。要卸载的类从其常量中取消分配,并分配新的副本。这在控制台中很容易验证
1.9.3p194 :002 > User.object_id
=> 70274894338560
1.9.3p194 :003 > reload!
Reloading...
=> true
1.9.3p194 :004 > User.object_id
=> 70274935456220
但Spree::Config.searcher_class
仍设置为原始IndexTankSearcher
类。
您可以添加一个to_prepare回调函数,该回调函数将在开发中的每个请求中调用,但在生产中仅启动一次(在启动时)