为什么如此多的宝石猛拉,你如何处理依赖?

时间:2013-03-26 11:43:34

标签: ruby-on-rails gem

今天我遇到了一个情况,即我正在维护的应用程序中使用的宝石被拉扯。

我之前没有见过一块被砸过的宝石,虽然我听说过它,并认为这是一种不好的做法。

我已尝试更新宝石,但在使用旧版或旧版时,应用开始失败。

看到宝石是自由托管的,并且可能被应用程序使用,它们的逻辑是什么?你如何管理被猛拉的宝石?

2 个答案:

答案 0 :(得分:9)

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

关于猛拉的宝石,即使作者从interwebz中删除了宝石,你也许应该考虑在你的项目中对它做同样的事情。那或者如果你真的喜欢宝石,主持一个分叉,给予积分并不断进化。 :)

答案 1 :(得分:4)

Rubygem's doc建议yanking来到:

  • 修复意外推送不完整版本
  • 防止用户无知地拉出已知安全问题的宝石

我从来没有管理过这样的案例,但我看到了三个选择:

  • 如果存在更高版本,则升级gem
  • 下载gem(文档说gem仍可供下载,除非在讨论过程之后已经完全删除,并且指向gemfile中的本地版本)
  • 围绕另一个gem或自定义代码重构您的代码

总而言之,看起来yanking a gem是一个极端的措施总是有充分的理由,所以你应该更喜欢升级/重构而不是坚持使用有潜在危险或被弃用的宝石...我猜。