Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么会有这么多的宝石被拔掉?对于依赖关系,你会怎么做?_Ruby On Rails_Gem - Fatal编程技术网

Ruby on rails 为什么会有这么多的宝石被拔掉?对于依赖关系,你会怎么做?

Ruby on rails 为什么会有这么多的宝石被拔掉?对于依赖关系,你会怎么做?,ruby-on-rails,gem,Ruby On Rails,Gem,我今天遇到了一个情况,我正在维护的一个应用程序中使用的一块宝石被拔掉了 我以前从未见过一颗被拉扯过的宝石,尽管我听说过,并且认为这是一种糟糕的做法 我尝试过更新gems,但当使用以前或更旧的版本时,应用程序开始失败 既然gem是免费托管的,并且可能被应用程序使用,那么使用gem的逻辑是什么?您如何管理已被拔出的宝石 对于您决定在项目中使用的每一个gem,您都应该有一个备选方案(另一个gem或您自己的实现)。 我看到人们强迫性地使用gem,而不关心它的质量、作者、更新频率。盲目依赖一个gem是危险

我今天遇到了一个情况,我正在维护的一个应用程序中使用的一块宝石被拔掉了

我以前从未见过一颗被拉扯过的宝石,尽管我听说过,并且认为这是一种糟糕的做法

我尝试过更新gems,但当使用以前或更旧的版本时,应用程序开始失败


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

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

关于被拔掉的gems,如果连作者都从interwebz中删除了gems,那么你可能也应该考虑在你的项目中使用它。或者,如果你真的很喜欢宝石,那就办一个叉子,给它积分,然后继续进化。:)

表明yanking是为了:

  • 修复不完整版本的意外推送
  • 防止用户无条件地拉取存在已知安全问题的gem
我从未处理过这样的案件,但我看到了三种选择:

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

总而言之,似乎拔掉一块宝石是一个极端的措施,总是有很好的理由,所以你应该更喜欢升级/重构,而不是坚持使用一块潜在危险或不推荐使用的宝石。。。我猜。

从答案判断,我怀疑我被迫保留依赖项的本地副本(或分叉我使用的所有依赖项),这样即使其中一个依赖项被删除,我的项目也可以继续运行。。。