Ruby on Rails引擎:何时/为何以外行人的方式。

时间:2014-06-13 17:45:33

标签: ruby-on-rails ruby rails-engines

我一直在阅读官方文档和第三方教程中关于Rails引擎的一些教程,而且我不确定我是否理解引擎的用途。我想知道是否有人可以解释何时以及为什么要使用引擎而不是在main / app目录中工作。

只是为了扩展我目前的理解:

引擎就像生活在应用程序的/ lib目录中的迷你应用程序。引擎可以在顶层共享模型或拥有自己的模型。

引擎对于对应用程序的组件(例如管理引擎,博客引擎等)进行逻辑分组非常有用,我可以看到这些组件可以在没有冲突的情况下拆分开发人员之间的工作。

我不断看到的示例是创建一个管理引擎,它拥有自己的用户模型以及它自己的特定视图。普通用户是否也拥有自己的引擎?他们会在数据库中共享同一个表吗?这些问题让我感到困惑。

如果有人能帮助我一点,那么在我开始使用自己的应用程序之前,它会有很多帮助。我不喜欢用糟糕的设计创建我的应用程序,并且必须返回并完全重新执行它。谢谢!

1 个答案:

答案 0 :(得分:3)

引擎非常适合创建独立模块,可以独立于较大的应用程序进行测试。通常这些用于创建可以在不同应用程序之间重用的组件,尽管在某些情况下您需要将大型应用程序分割成更小,更分区的引擎。

我建议只在您希望让应用程序的一部分可重用时才使用它们。一旦开始将应用程序分解为引擎,您可能会发现自己的生活变得非常困难。单片应用程序和由多个模块组成的应用程序之间没有特定的收益。

唯一的例外是,如果你有一个庞大的分布式团队,每个团队都需要能够独立工作。在这种情况下,引擎方法的开销值得付出。通常不是。