10

我今天遇到了一种情况,我正在维护的应用程序中使用的 gem 被猛拉。

虽然我听说过,但我以前从未见过被拉出的宝石,并认为这是一种不好的做法。

我已尝试更新 gem,但在使用以前或旧版本时应用程序开始失败。

既然 gem 是免费托管的,并且可能被应用程序使用,那么拉取它们的逻辑是什么?您如何管理被拉出的宝石?

4

2 回答 2

11

对于您决定在项目中使用的每个 gem,您应该有一个替代方案(另一个 gem 或您自己的实现)的想法。我看到人们强迫性地使用 gem,而不关心它的质量、作者、更新频率。盲目地依赖一个 gem 是很危险的,在 Gemfile 中添加另一行的决定不应该掉以轻心。

关于 yanked gems,如果即使是作者也从 interwebz 中删除了 gems,你可能应该考虑在你的项目中对它做同样的事情。那或者如果你真的很喜欢这颗宝石,请托管一个分叉,给予信用并不断发展它。:)

于 2013-03-26T11:57:01.300 回答
4

Rubygem 的文档建议 yanking 是为了:

  • 修复不完整版本的意外推送
  • 防止用户毫无头绪地拉取已知安全问题的 gem

我从来不需要处理这种情况,但我看到了三个选项:

  • 如果存在更高版本,则升级 gem
  • 下载 gem(文档说 gem 仍然可以下载,除非它在讨论过程中有充分的理由被完全删除)并指向 gemfile 中的本地版本
  • 围绕另一个 gem 或自定义代码重构您的代码

总而言之,猛拉 gem 似乎是一种极端的措施,总是有充分的理由,所以你应该更喜欢升级/重构而不是坚持使用具有潜在危险或已弃用的 gem ......我猜。

于 2013-03-26T12:03:13.687 回答