我们正在研究构建一个非常大的导轨应用程序,并考虑使用引擎更好地将“模块”分离出主应用程序。构建作为宝石的导轨引擎的工作流程
我们已经通过创建一个使用宝马motorhead的小型引擎(想要它的active_if组件的想法)来开始这个过程。 该引擎然后从主应用程序中删除,并给了一个git init,然后推送到github。
主应用程序然后能够在Gemfile内拉出宝石。
在这个概念验证过程中,它可以工作,但效率不高,而且以这种方式更新新引擎/宝石有点尴尬,因为它有点像一个子模块。构建像这样的模块化应用程序时,构建和维护引擎/宝石的正确工作流程是什么?
预先感谢
你可以把你的引擎宝石嵌入你的主要Rails应用程序;例如,在'app/engines'或'lib/engines'下;然后使用你的Gemfile从相对路径直接加载gem(使用'path:'选项)。这将所有内容都保存在一个存储库中,但在逻辑上完全分离,并且您可以根据需要选择将每个引擎完全提取为真正的宝石。 –
感谢罗伯特,是的,我们尝试了两种选择。主要问题是,如果我们想让它们完全分离宝石,那么如何继续发展它们呢?即他们目前没有gemfile等,不能单独通过rails服务器启动。此外,当对宝石进行更改(再开发它时),主应用程序需要重新启动或宝石弹簧 – Rockman
您的评论是单块而不是SOA的论点。 DHH的位置:https://m.signalvnoise.com/the-majestic-monolith-29166d022228 – toddmetheny