无法延迟代码块的评估,直到在厨师食谱中运行时间

时间:2015-01-01 18:20:14

标签: chef

我有一个厨师食谱,我想要包含一个宝石文件并使用它如下

gem_package "my-gem"
require '<my-gem>'
my_var = <Using methods supported by gem>

然而,在编译过程中出现错误“无法加载此类文件” 有什么方法可以延迟这个检查,以便在运行期间安装gem并可以使用。

我不想使用ruby块(不确定即使在编译期间它会工作或失败),因为我不知道怎么能在“my_var”变量之外使用“my_var”变量ruby阻止在其他chef-resource中或在ruby块外部进行的任何条件检查。

1 个答案:

答案 0 :(得分:1)

这里有两个答案。首先是您提出的问题,您可以将代码包装在ruby_block资源中。这将推迟评估直至收敛阶段。

这个问题的真正答案是您应该使用chef_gem资源而不是gem_package。这会自动将gem安装到Chef的ruby安装中,并在编译时执行以避免此问题。