2012-05-16 3 views
4

다른 Rails 엔진에 Rails 엔진을 포함 (포함) 할 수 있습니까?Nested Rails Engines

몇 가지 섹션으로 나뉘어 각 섹션을 레일스 엔진으로 바꾸고 싶은 Rails 3.1 앱을 만들고 있습니다. 그러나 전체 앱을 Rails 엔진으로 전환 할 수 있기를 바랍니다.

답변

0

중첩 엔진의 장점은 무엇인지 생각해보십시오. 네 스팅은 커플 링을 의미하며 유지 보수성과 테스트 가능성을 향상 시키려면 커플 링을 줄여야합니다. 필자는 이상적인 엔진이 독립형으로 쉽게 실행될 수 있어야한다고 생각합니다.이 때문에 dummy 앱이 test 디렉토리에 생성 된 것입니다. 확실하게 중첩을 유지하거나 메인 애플리케이션에 공통적 인 내용을 유지할 수 있지만 코드 기반이 커짐에 따라 밀접하게 결합 된 종속성으로 테스트를 유지하는 것이 어렵다는 것을 알 수 있습니다.

해결책으로 나는 대신 합성하려고합니다. 서로 옆에 엔진 디렉토리를 넣어하지만 중첩 된 모듈을 사용

engines/foo_project - namespaced FooProject::* 
engines/foo_project_user - namespaced FooProjectUser::* or FooProject::User::* 

FooProject에서 FooProject::User 필요가 다음 이상적이 FooProject::Layout 같은 다른 엔진으로 추출 할 수 갈까요 뭔가가 있다면. 다른 방향으로 주 앱은 에 User 물건을 연결해야합니다. 기본 앱 수준에서 통합 테스트를 추가하면 주문이 생성됩니다.