是否可以在其他Rails引擎中嵌入(嵌套)Rails引擎?
我正在开发一个Rails 3.1应用程序,我希望将其分成几个不同的部分,并将每个部分转换为Rails引擎。但是,我也希望能够将整个应用程序转换为Rails引擎。
答案 0 :(得分:1)
答案 1 :(得分:0)
想一想嵌套引擎带来的好处。嵌套意味着耦合,如果您想提高可维护性和可测试性,则应该减少耦合。
我认为理想的引擎应该能够轻松独立运行 - 这就是为什么你在dummy
目录中创建了test
应用程序的原因。当然你可以在主应用程序中保持嵌套或保持常见的东西,但是你会发现随着代码库的增长,使用紧密耦合的依赖关系来维护测试会更加困难。
作为一种解决方案,我会尝试使用构图。将引擎目录放在一起但使用嵌套模块:
engines/foo_project - namespaced FooProject::*
engines/foo_project_user - namespaced FooProjectUser::* or FooProject::User::*
如果FooProject::User
需要来自FooProject
,那么理想情况下,它应该被提取到FooProject::Layout
之类的另一个引擎中。在另一个方向,主应用应将User
内容连接到FooProject
。在主应用程序级别添加集成测试,然后获得ordnung。