1

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サーバーが変更されるたびにサーバーを再起動せずに自動リロードする方法についてのアイデアはありますか?

4

1 に答える 1

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コールバックを追加できますが、本番環境では1回だけ(起動時に)呼び出されます

于 2012-09-11T12:06:35.177 に答える