首先介绍一下上下文:我目前是一名自由职业者,使用Ruby on Rails开发webapps。因为我独自工作,所以优化我的工作流程非常重要。
这就是为什么自从我开始使用Rails以来我一直有同样的问题:
如何在我的应用之间共享代码/配置/约定/测试?
更确切地说,我想分享:
我在所有应用中需要的一些具体示例:
到目前为止,我还没有真正需要共享模型和控制器。 我不想分享系统本身的行为或功能组件,我不是在寻找微服务架构。
我发现到目前为止,在创建新应用程序时,所有这些设置工作确实花了我很多时间。此外,当我添加新内容时,我希望将其主动应用于现有应用程序。
我做了很多研究,但我还没有找到很多答案。许多人都在尝试分享模型,但很少有人愿意在所有应用之间分享共同点。但是,找到合适的关键字可能就是问题所在。
在我看来,Rails在应用程序中非常擅长DRY,在尝试在应用程序之间进行DRY时并不那么容易。
我正在使用的解决方案,在Rails Application Templates guide中描述,使用与Creating and Customizing Rails Generators & Templates guide中描述的Rails生成器相同的API。
这是Thoughtbot使用的解决方案,其流行的suspenders gem。虽然对于Butbot来说,他们有多年的经验,有很多员工,他们的共同设置并没有那么大的变化。
优点:
缺点:
到目前为止,这个解决方案并没有那么糟糕,因为我只有两个应用程序。但是一旦我有更多,我将遭受越来越多的开销。
更好的解决方案可能是为每个常见新功能创建生成器/ rake任务,以便能够将其快速应用到现有应用程序,并直接在新应用程序的应用程序模板中调用它。
我虽然没有尝试过,但我不确定它会起作用。例如,如果我想在所有应用程序中的现有公共文件中传播单行更改,该怎么办?
我在Rails Engines上做了一些修改以分享代码 我没有从Getting Started with Engines guide了解我是否应该更好地使用--full引擎或 - 可安装引擎来实现此特定目的。
优点:
缺点:
这个解决方案有太多重要的缺点。
也许最好的方法是使用上述解决方案
在gem共享帮助器和测试中,在rails模板中共享gems,它们的配置/文件和其他文件(用于git,linters等)
它确实增加了更多的复杂性和开销......
有些人使用git子树在多个webapps之间共享文件夹。
缺点:
是否有另一种解决方案,而不是我上面提到的解决方案? 您认为最好的方法是什么?
答案 0 :(得分:0)
如何让空白" Master"某个地方的git中的rails app。使用您想要分享的所有设置和配置。从头开始创建新应用程序时,您可以合并" Master"进入它以应用默认值。当你有一个现有的应用程序,同样的事情,只需根据需要合并和解决冲突。这也使你能够在需要时覆盖合并的代码。
我认为这种方法很少见:
Rails应用程序名称可能会引起很多麻烦
任何更新都可能导致合并冲突
答案 1 :(得分:0)
我在nodejs项目中工作时创建了一个用于处理此问题的工具。但是该工具实际上只是命令行工具,因此您应该可以使用它。
https://github.com/tomasbjerre/dictator-builder
这是创建独裁者的概念,该独裁者决定了代码库的各个部分。