2009-07-11 3 views
20

서버를 다시 시작하지 않고도 ENV가 "lib"파일을 다시로드 할 수있는 방법이 있습니까? 나는 "lib"에있는 모듈 안에있는 몇몇 클래스들과 함께 일하고있다. 그러나 내 변경 사항을 보려면 매번 서버를 다시 시작해야합니다. Rails가 의도 한 방식이라고 추측하고 있지만 라이브러리 파일 및/또는 플러그인을 개발할 때는 상당히 지루합니다.(Rails) 서버를 다시 시작할 필요없이 "lib"파일을 다시로드하는 중 ... ...?

확실하게 나는이 잘못된 ....에 대해 갈거야?

최저

EDIT 1

1이나 2가 나를 위해 일한 어느 대답. 대신 모듈을 사용하는 컨트롤러에서 오류가 표시되었습니다. 참고로, "lib/xmlitems"디렉토리에 3 개의 파일이 있습니다. 그 하위 디렉토리를로드하려고 시도한 다음 다른 모든 파일을 "요구하는"단일 파일을 참조했습니다. 모든 파일을 개별적으로로드합니까?

+0

중복 대상을 보면 아무런 대답도 없습니다. 중복으로 질문이 표적에서 응답 될 것을 요구하기 때문에, 나는 재결성하기 위하여 투표하고있다. –

답변

-1
module ActsAsReloadable 
    def self.included(base) 
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' 
    end 
end 

당신의 lib 디렉토리/* 파일에서, 단순히 include ActsAsReloadable를 사용하고 config/application.rb

-3

쉬운 방법 거기에 config.autoload_paths += %W(#{config.root}/lib)를 추가하려면 단지 development.rb하는

config.reload_plugins = true 

추가

+0

이것은 나를 위해 작동하지 않았다. –

13

레일 3레일 4.0, @ txwikinger의 대답에 나와있는 지침이 다릅니다. environments/development.rb 파일에 다음 줄을 추가하십시오.

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << '<my modules in lib>' 
+0

내가 이것을했을 때, 나는 Utils라는 모듈을 사용하고 있었다. 코드를 실행하면, 초기화되지 않은 상수 인 ActionView :: CompiledTemplates :: Utils'라는 오류가 발생했습니다. –

+0

흠. pastie.org에 코드를 입력하고 링크를 공유 할 수 있습니까? – JellicleCat

+0

그것은 내 자신의 잘못이었습니다. 비록 내가 git diff를 사용하여 그것을 고립 시켰다고 생각했지만. 죄송합니다 JellicleCat, 불행히도 Stackoverflow 내 -1에 잠겨 있습니다. 그래도 대답은 확인할 수 없습니다. –