0

我正在使用一个 ruby​​ 项目,它由一个主要的 gem(我们称之为 SuperGem)和它所依赖的几个较小的 gem 组成。该项目在 Github 上,我已经分叉了它并正在维护我自己的版本(称为 SuperGemFork)。当 SuperGem 更新时,我只需要拉取和合并新代码,然后在 SuperGemFork 上更新版本号。

现在是这种情况。我还想制作我自己版本的依赖项之一(我们称之为 SmallGem)。所以现在我希望 SuperGemFork 依赖于 SmallGemFork 而不是 SmallGem。因此,当 SuperGem 和 SmallGem 都更新时,我现在必须将两个 gem 中的代码提取并合并到我的 fork 中,更新版本号,并将 SuperGemFork 中的依赖关系更改为依赖于 SmallGemFork 的新版本。

我遇到的问题是必须更改 SuperGemFork 中的依赖项。当 SuperGem(原版)更新时,它现在依赖于 SmallGem 的新版本。但是,如果我从两个 gem 中提取并合并代码,然后忘记更新依赖项,SuperGemFork 仍然依赖于 SmallGemFork 的旧版本,即使有新版本可用。必须更改依赖项是多余且容易出错的,bundle install如果我忘记这样做,我希望在运行或启动应用程序时至少有一些失败。

那么,有没有一种好方法可以让我轻松维护自己的 gem 分支,这些分支之间存在依赖关系?

谢谢,亚历克斯

4

1 回答 1

0

如果可以对原始 gem 进行猴子补丁,而不是重写源代码,我会这样做。这是 Ruby 的强项之一。

然后他们可以更改他们的代码,您将不会像实际逻辑和他们正在创建的对象那样紧密地耦合到源的物理布局。

于 2012-08-08T21:58:20.420 回答