3

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

谁能解释一下?

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

谢谢!

4

2 回答 2

1

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

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

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

于 2013-03-02T22:34:39.343 回答
0

您可以随时使用:

$ gem env gemdir

或者

$ gem env gempath

获取您的 gems 目录。

于 2013-03-02T20:56:25.137 回答