嵌套的Rails引擎

时间:2012-05-16 22:24:42

标签: ruby-on-rails ruby-on-rails-3.1

是否可以在其他Rails引擎中嵌入(嵌套)Rails引擎?

我正在开发一个Rails 3.1应用程序,我希望将其分成几个不同的部分,并将每个部分转换为Rails引擎。但是,我也希望能够将整个应用程序转换为Rails引擎。

2 个答案:

答案 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。