对某些宝石的不同版本的依赖

时间:2014-01-24 06:25:10

标签: rubygems chef

我一直在玩厨师宝石。当我检查它的依赖性时,事实证明它依赖于某些宝石的多个版本,如json,chef-zero等。

我的问题是为什么宝石依赖于同一宝石的多个版本?我的意思是,不应该是因为我安装了最新版本的chef-zero并且它满足了厨师的所有依赖性?此外,我有什么方法可以做出改变,这样厨师只能依靠一个版本的厨师零点?

2 个答案:

答案 0 :(得分:3)

这就是开源之美,任何拥有好主意和良好编程技能的人都可以做出贡献。但人们不会从头开始编写所有内容。它是一个进化过程,因此宝石使用其他可用的宝石来满足他们的需求,从而导致依赖。

一个简单的例子是像'PDFKit'或'wicked_pdf'这样的宝石。两者都是用于将html页面打印为pdf的伟大宝石..但它们使用相同的深度,即'wkhtmltopdf-binary'。由于后者已经可用,因此这些插件的作者编写该部分代码实际上并不是一个好主意。这样更聪明。

所以简而言之,你必须自己处理依赖关系,但从好的方面来说,几乎每个好的宝石都会在更改日志中明确提到它们的依赖状态。

答案 1 :(得分:0)

嗯,这不是那个。您不必安装同一gem的多个版本。据我所知,您对以下类型的Chef 11.8.2的依赖性感到困惑:

chef-zero >= 1.6.2, ~> 1.6
diff-lcs >= 1.2.4, ~> 1.2

在这种情况下,您必须安装支持这两种约束的版本。例如,对于chef-zero,它将是超过1.6.2(第一个约束)但不大于2.0(第二个约束)的任何版本。 (Gem dependencies versions meaning

使用json更容易

json <= 1.7.7, >= 1.4.4

安装的版本应介于1.4.4和1.7.7之间。