2013-06-24 6 views
2

보석/엔진을 개발 중입니다. 나는이 작업을 수행하는 방법은 소스에서 테스트 RailsApp에 번들입니다 : 이것은 지금까지 잘 작동파일 변경 후 My :: Engine의 초기화되지 않은 상수

# Gemfile 
gem 'my-engine', path: '../local/path/to/gem' 

.

하지만 내 보석에서 파일을 변경 한 후에 (예 : 공백이나 휴식 추가) 엔진이 언로드됩니다. 이 오류는 My::Engine에 대한 첫 번째 호출을 수행하는 파일에 의해 발생합니다

uninitialized constant My::Engine 

: 다음과 같은 오류를 유발. (나는 루트를 얻기 위해 호출해야합니다 : My::Engine.root) 그 라인을 지우면 아무 에러도 발생하지 않지만 빈 페이지 만 렌더링됩니다. 이것은 모든 SQL의 변경과 내용이 데이터베이스에서로드되기 때문에 발생합니다 . 나는 lib 디렉토리에있는 파일이 언로드되기 때문에이 파일에 내가 동적으로 활성 레코드 모델을 만들 수 있기 때문에이, 생각 ..

나는 이미 autoload_pathswatchable_dirs 체크 아웃 :

# engine.rb 
module My 

    class Engine < Rails::Engine 

    engine_name 'my-engine' 

    initializer "my-engine.load_config" do |app| 
     app.config.autoload_paths += %W(#{Engine.root}/lib) 
     app.config.watchable_dirs["#{Engine.root}/lib"] = [:rb] 
    end 

    end 

end 

난을 이 방법을 제대로 구현하고 있는지 확신 할 수는 없지만 문제를 해결하는 데 사용하지 않는 것 같습니다.

+0

나는 대답을 얻는 데 관심이 있습니다. 나는 엔진 개발과 동일한 문제가 있었다. 내 '솔루션'은 내 main_app (엔진이 아닌 호스트 레일 애플리케이션)의'application.rb'에서'require 'my'와 같은 것을하는 것이었다. 이것은 나를 위해 일했지만 꼭 필요한 것 같지 않습니다. –

+0

팁 주셔서 감사합니다, 나는 지금 당장 그것을 시도 할 것입니다 ..하지만 실제로 더 좋은 방법이 있어야합니다 .. –

답변

0

My :: Engine.root를 호출하기 전에 '내/엔진'을 요구하거나, 호출 순서에 따라 '내/엔진'이 필요하도록 요구 사항의 순서를 변경해야한다고 생각합니다. 내 :: 엔진.