6

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

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

4

2 回答 2

1

可能,但并不容易。
http://confreaks.com/videos/863-railsconf2012-railes-engines-patterns

于 2012-08-20T22:51:27.150 回答
1

想想您从嵌套引擎中获得了什么好处。嵌套意味着耦合,如果你想提高可维护性和可测试性,你应该减少这种耦合。我认为理想的引擎应该能够轻松独立运行 - 这就是您在目录中dummy创建应用程序的原因。test当然,您可以在主应用程序中保持嵌套或保留常见的东西,但您会发现随着代码库的增长,使用紧密耦合的依赖项来维护测试变得更加困难。

作为一种解决方案,我会尝试组合。将引擎目录彼此相邻但使用嵌套模块:

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

如果有什么FooProject::User需要,FooProject那么理想情况下它应该被提取到另一个引擎中,比如FooProject::Layout. 在另一个方向,主应用程序应该将User内容连接到FooProject. 在主应用程序级别添加集成测试,你就会得到 ordnung。

于 2015-02-04T22:15:14.187 回答