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

时间:2016-09-16 00:48:56

标签: ruby rubygems

我有一个gem(在RubyGems上可用)依赖于另一个gem。那个依赖的gem有一个我最近修复过的bug。不幸的是,这种依赖的宝石已经死了;多年来它没有看到更新,而且所有者上都没有活跃在GitHub上,更不用说提交这个宝石了,所以我不期待我的补丁将被接受 - 当然不会很快。

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

1 个答案:

答案 0 :(得分:2)

首先检查有问题的宝石许可证(以及您的代码许可证 - 确保事情保持兼容)。

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

  • 在项目中包含固定的gem,并告诉bundler / Gemfile使用该地区的gem。
  • 分叉,修复并告诉bundler / Gemfile使用您的git存储库。
  • 分叉,修复和重新发布(即upstream变体,包含开源及其社区)。
  • Monkey-Patching在运行时也可能是一个解决方案(取决于有问题的代码和你的代码气味容忍度。基本上:不要在家里做这个!独自一人,在工作!)

我选择 fork,fix and re-release 解决方案,但您可能需要明确(在自述文件中)此gem需要一个新的维护者。

这取决于你的意思" best" ( ......最好的方式...... )。最简单的可能是猴子补丁,其次是在您的存储库中包含gem并告诉bundler / Gemfile从那里获取它。此外,没有奇怪的宝石更新将破坏您的代码。但是,如果有任何修复(由像你这样的人:)),你就会错过它们。