我试图找出如何引用厨师宝石二进制,它只是发生,我认为宝石总是被载入了在1.9.1
目录,而不是1.9.3
....为什么gem安装到1.9.1中。目录,即使我已安装1.9.3?
谁能解释这?
如果/当我移动到Ruby 2时,这会改变吗?如果它要更改,不想硬编码1.9.1
....
谢谢!
我试图找出如何引用厨师宝石二进制,它只是发生,我认为宝石总是被载入了在1.9.1
目录,而不是1.9.3
....为什么gem安装到1.9.1中。目录,即使我已安装1.9.3?
谁能解释这?
如果/当我移动到Ruby 2时,这会改变吗?如果它要更改,不想硬编码1.9.1
....
谢谢!
厨师可以在node["languages"]["ruby"]["bin_dir"]
中找到rubygems创建可执行文件的目录。因此,您应该从不改变食谱中的这些路径的硬编码。
至于您的确切问题:在Ruby> = 1.9.1和< 2.0.0中,rubygems将gem安装到1.9.1
目录中以表示其使用1.9.1 ABI。目的是编译的宝石可以在使用ABI的不同ruby版本之间互换使用。然而,在实践中,这变得更加困难...
Ruby 2.0.0使用2.0.0
目录。同样,你不应该硬编码路径,而是使用节点属性(OHAI使用rubygem自己的设施设置)。
您可以随时使用:
$ gem env gemdir
或
$ gem env gempath
让你的宝石目录。
感谢您对我的问题的具体答案,以及一些背景故事! – Brandon 2013-03-03 00:36:15
如果我在厨师食谱中安装了新的系统红宝石,这个路径是否会更新,以便我可以使用'gem_package'来安装新宝石的gem? @iain @holger只是 – Brandon 2013-03-03 00:37:06
如果你改变红宝石与厨师跑的开始相比,你必须使用'ohai'资源来重新加载信息。另外,在安装任何其他gem之前,您应该确保这样做,以确保一致的安装目标。 – 2013-03-03 09:59:55