보석/엔진을 개발 중입니다. 나는이 작업을 수행하는 방법은 소스에서 테스트 RailsApp에 번들입니다 : 이것은 지금까지 잘 작동파일 변경 후 My :: Engine의 초기화되지 않은 상수
# Gemfile
gem 'my-engine', path: '../local/path/to/gem'
.
하지만 내 보석에서 파일을 변경 한 후에 (예 : 공백이나 휴식 추가) 엔진이 언로드됩니다. 이 오류는 My::Engine
에 대한 첫 번째 호출을 수행하는 파일에 의해 발생합니다
uninitialized constant My::Engine
: 다음과 같은 오류를 유발. (나는 루트를 얻기 위해 호출해야합니다 : My::Engine.root
) 그 라인을 지우면 아무 에러도 발생하지 않지만 빈 페이지 만 렌더링됩니다. 이것은 모든 SQL의 변경과 내용이 데이터베이스에서로드되기 때문에 발생합니다 . 나는 lib
디렉토리에있는 파일이 언로드되기 때문에이 파일에 내가 동적으로 활성 레코드 모델을 만들 수 있기 때문에이, 생각 ..
나는 이미 autoload_paths
및 watchable_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
난을 이 방법을 제대로 구현하고 있는지 확신 할 수는 없지만 문제를 해결하는 데 사용하지 않는 것 같습니다.
나는 대답을 얻는 데 관심이 있습니다. 나는 엔진 개발과 동일한 문제가 있었다. 내 '솔루션'은 내 main_app (엔진이 아닌 호스트 레일 애플리케이션)의'application.rb'에서'require 'my'와 같은 것을하는 것이었다. 이것은 나를 위해 일했지만 꼭 필요한 것 같지 않습니다. –
팁 주셔서 감사합니다, 나는 지금 당장 그것을 시도 할 것입니다 ..하지만 실제로 더 좋은 방법이 있어야합니다 .. –