为什么宝石安装到1.9.1。目录即使我安装了1.9.3?

时间:2013-03-02 20:25:16

标签: ruby binary filesystems gem

我正在试图弄清楚如何在Chef中引用gem二进制文件,我刚想到gems总是被加载到1.9.1目录中,而不是1.9.3 ...

有人能解释一下吗?

如果/当我转移到Ruby 2时,这会改变吗?如果它会发生变化,不想硬编码1.9.1 ....

谢谢!

2 个答案:

答案 0 :(得分:1)

在chef中,您可以在node["languages"]["ruby"]["bin_dir"]中找到rubygems创建可执行文件的目录。因此,您应该永远不要在食谱中对这些路径进行硬编码,因为它们可能会发生变化。

至于你的确切问题:在Ruby> = 1.9.1和< 2.0.0,rubygems将gems安装到1.9.1目录中以表示其对1.9.1 ABI的使用。意图是使用此ABI可以在不同的ruby版本之间互换使用针对它编译的gem。然而,在实践中,这变得更加困难......

Ruby 2.0.0使用2.0.0目录。同样,您不应该对路径进行硬编码,而是使用节点属性(由OHAI使用rubygem自己的工具设置)。

答案 1 :(得分:0)

您可以随时使用:

$ gem env gemdir

$ gem env gempath

获取你的gems目录。