Rails 3.2.7自动重装lib

时间:2012-09-11 11:26:46

标签: ruby-on-rails ruby spree

我尝试过大多数解决方案,例如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自动重新加载而不重新启动服务器的任何想法?

1 个答案:

答案 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回调函数,该回调函数将在开发中的每个请求中调用,但在生产中仅启动一次(在启动时)