我正在使用一个ruby项目,它包含一个主要的gem(让我们称之为SuperGem)和它依赖的几个小宝石。该项目是在Github上,我已经分叉了它并维护我自己的版本(称为SuperGemFork)。当SuperGem更新时,我只需要拉动并合并新代码,然后更新SuperGemFork上的版本号。
现在情况如此。我也想制作我自己的一个依赖项版本(让我们称之为SmallGem)。所以现在我希望SuperGemFork依赖SmallGemFork而不是SmallGem。因此,当SuperGem和SmallGem都更新时,我现在必须将两个gems中的代码拉入并合并到我的forks中,更新版本号,并更改SuperGemFork中的依赖关系以依赖于新版本的SmallGemFork。
我遇到的问题是必须更改SuperGemFork中的依赖项。当SuperGem(原版)更新时,它现在取决于新版本的SmallGem。但是,如果我从两个gems中提取并合并代码,但是忘记更新依赖项,即使有新版本可用,SuperGemFork仍然依赖于旧版本的SmallGemFork。必须更改依赖项是多余的,容易出错,我想在运行bundle install
或启动应用程序时至少有一些失败,如果我忘了这样做。
那么,对于我来说,有一个很好的方法可以轻松维护我自己的宝石叉子,这些宝石之间存在依赖关系吗?
谢谢, 亚历
答案 0 :(得分:0)
如果可以对原始宝石进行修补,而不是重写源代码,我会这样做。这是Ruby的优势之一。
然后他们可以改变他们的代码,你将不会像实际的逻辑和他们正在创建的对象那样与源的物理布局紧密耦合。