我正在试图弄清楚如何在Chef中引用gem二进制文件,我刚想到gems总是被加载到1.9.1
目录中,而不是1.9.3
...
有人能解释一下吗?
如果/当我转移到Ruby 2时,这会改变吗?如果它会发生变化,不想硬编码1.9.1
....
谢谢!
答案 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目录。