我有一个厨师食谱,我想要包含一个宝石文件并使用它如下
gem_package "my-gem"
require '<my-gem>'
my_var = <Using methods supported by gem>
然而,在编译过程中出现错误“无法加载此类文件” 有什么方法可以延迟这个检查,以便在运行期间安装gem并可以使用。
我不想使用ruby块(不确定即使在编译期间它会工作或失败),因为我不知道怎么能在“my_var”变量之外使用“my_var”变量ruby阻止在其他chef-resource中或在ruby块外部进行的任何条件检查。
答案 0 :(得分:1)
这里有两个答案。首先是您提出的问题,您可以将代码包装在ruby_block
资源中。这将推迟评估直至收敛阶段。
这个问题的真正答案是您应该使用chef_gem
资源而不是gem_package
。这会自动将gem安装到Chef的ruby安装中,并在编译时执行以避免此问题。