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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在gem依赖中处理错误修复的最佳方法是什么?相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

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

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

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

以上是关于在gem依赖中处理错误修复的最佳方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 gemfile 中强制 gem 的依赖项吗?

如何修复此错误? config.gem:在 vendor/gems 中解压的 gem authlogic-2.1.3 没有规范文件

在 react redux 中处理 fetch 错误的最佳方法是啥?

安装gem“设计”时如何修复错误?

验证外部gem的ActiveRecord模型的最佳方法

在角度,angularjs和jQuery技术构建的应用程序中,处理客户端全局错误的最佳和最佳方法是什么?