在gem依赖中处理错误修复的最佳方法是什么?

mip*_*adi 6 ruby rubygems

我有一个gem(在RubyGems上可用)依赖于另一个gem.那个依赖的gem有一个我最近修复过的bug.不幸的是,这种依赖的宝石已经死了; 它已经几年没见的更新,而主人不活跃GitHub上了所有,更不用说制定承诺这种宝石,所以我不希望我的补丁将得到很快接受肯定又没时间.

鉴于此,处理这个依赖宝石的修补版本的最佳方法是什么?我是否将它分叉并将新的gem(带有新名称)上传到RubyGems,并依赖于此?我不知何故用我自己的宝石包装我的固定版本?

Fel*_*lix 2

首先检查有bug的gem的LICENSE(以及您的代码的许可证 - 确保保持兼容)。

然后 - 正如你所说 - 你有多种选择:

  • 将固定的 gem 包含在您的项目中,并告诉 bundler/Gemfile 使用该位置的 gem。
  • Fork、修复并告诉bundler/Gemfile 使用您的 git 存储库。
  • 分叉、修复和重新发布(这就是upstream变体,拥抱开源及其社区)。
  • 在运行时进行猴子修补也可能是一种解决方案(这在一定程度上取决于所涉及的代码和您的代码气味容忍度。基本上:不要在家里这样做!在工作中不要打扰!)。

我会选择分叉、修复和重新发布解决方案,但您可能必须明确(在自述文件中)这个 gem 需要一个新的维护者。

这取决于您对“最佳”的含义(...什么是最好的方法...)。最简单的可能是猴子补丁,其次是将 gem 包含在您的存储库中并告诉捆绑程序/Gemfile 从那里获取它。另外,任何奇怪的 gem 更新都不会破坏您的代码。但是,如果需要修复(由像你这样的人:)),你就会错过它们。