我想使用Rails来构建可扩展的模块化应用程序,该应用程序可以配置为符合个人需求。
让我解释一下我在“可扩展”和“模块化”下的理解。例如,假设我正在开发一个博客应用程序引擎,并且有一个名为的模型BlogEntry
,其中包含一个简单的博客条目通常包含的内容-标题和内容。假设我希望此应用程序能够在2种模式下运行:
BlogEntry
地说只有两个属性-标题和内容BlogEntry
例如,当扩展为具有更多属性时,它将与名为的单独模型进行多对多链接Tag
。我的目标是:
BlogEntry
只是一个简单的独立类,当插入标签功能时,类中包括某种增强模块,在BlogEntry
某些情况下会添加代码BlogEntryController
,甚至会增加某些输出在博客视图中指定的位置。因此,如果您不想要任何复杂的功能,则应用程序将保持非常简单和基本。如果需要额外的支持,则可以使用多个插件扩展应用程序,因此它并不会成为一个庞大的应用程序—万事俱备。
实际上,这种可插入功能实际上存在于任何主要的高级Web开发平台中,例如MediaWiki,Moodle,WordPress等。
到目前为止,搜索“模块化导轨”的结果是:
我敢打赌,有无数种方法可以实现我所说的内容。最好的是什么?在哪里可以看到此类模块化应用程序的一个好例子?
我认为Rails Engines确实是您想要的。
我为作为引擎交付的几个应用程序做出了贡献,以基本完成您所描述的内容。这是我主要开发的其中之一:http : //github.com/team-umlaut/umlaut
这并不总是那么简单,在很多地方您需要决定如何设置,Rails文档或明显的约定并不一定会指导您。我同意引擎(非常有限)文档并不一定会引导您走这条路。但是引擎足以完成需要做的事情。还给您足够的绳索来吊起自己并使事情变得过于复杂。
我建议使用rails plugin new name_of_engine --full
-而不是 创建Engine骨架--mountable
。我认为--mountable
对于这种特定类型的引擎用例而言,过于复杂没有好处。(其他人可能会不同意;是的,对于这种情况,选择和最佳实践并不总是很清楚)。
基本上不推荐使用Rails插件;当前支持的唯一类型的插件是plugins-as-gems -其中Engine是功能最强大的(可以与Rails进行最多类型的交互),您将需要使用此类插件。
我同意您的意见,为什么这里的应用程序模板不够用-尽管您可能想提供一个应用程序模板,以使用gemfile中的引擎以及本地应用程序中生成的所有必要的本地存根创建一个应用程序。我在的最新版本中进行了此操作umlaut
,但直到最近才这样做,这并不是绝对必要的,除非您至少有了基本的概念证明,否则我将保留它。
Rails并不一定鼓励这样做,但是有可能并且可以进行足够的工作,我同意您适合某些情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句