2012-09-11 1 views
1

require_dependency과 같은 대부분의 솔루션을 시도했으며 application.rbautoload을 추가하고 lib 폴더는 사용할 수 있지만 주사위는 사용할 수 없습니다.레일 3.2.7 자동 다시로드 lib

내가 가진 lib/index_tank_searcher.rb에 :

여기 내 응용 프로그램 설정 방법

class IndexTankSearcher < Spree::Core::Search::Base 
    def method 
    end 
    end 

그리고 config/intializers/spree.rb에서 Spree::Config.searcher_class = IndexTankSearcher 있습니다.

변경 될 때마다 서버를 다시 시작하지 않고 index_tank_searcher.rb이 자동으로 다시로드되는지 확인하는 방법에 대한 아이디어가 있으십니까?

+1

에서 (시작시) 한 번만 개발에 각 요청에 호출 될 to_prepare 콜백을 추가 할 수 있지만 수 있는지 질문/너는 무엇을 성취하려고 노력하고 있느냐. – ksol

+1

초기화 프로그램의 코드는 응용 프로그램이로드 될 때 한 번만 실행됩니다. 이니셜 라이저에서 searcher_class를 IndexTankSearcher로 설정하면 다시로드되지 않을 수 있습니다. –

+0

아! Beerlington이 맞을지도 모릅니다. 앱을로드하기 전에이 클래스를 설정해야하는 것처럼 보이기 때문에 어떤 방법 으로든 돌아 다닐 수 있습니까? –

답변

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 클래스로 설정되어 콘솔에서 쉽게 입증 할 수 있습니다. 내가 알고하지 않기 때문에

당신은, 생산 내가 힘든 시간 응답을 보내고 있습니다

+0

이것은 자리 잡았습니다! 'application.rb'의'to_prepare' 콜백에서'Spree :: Config.searcher_class = IndexTankSearch Rails.env.development?'를 추가해야만했습니다. 그것은 매력처럼 작동했습니다. Frederick 감사합니다! 감사합니다! –