Chef infra Chef 12.5风格的自定义资源:安装加载\当前\值块所需的gem?

Chef infra Chef 12.5风格的自定义资源:安装加载\当前\值块所需的gem?,chef-infra,Chef Infra,我有一个Chef 12.5风格的自定义资源,需要在load\u current\u value块中“require”它之前安装gem。我试图使用一个chef_gem资源,但是当我在那里使用它时,我在chef_gem上得到了一个命名错误。这项工作: load_current_value do Chef::Resource::ChefGem.new 'inifile' do compile_time true end require 'inifile' # ... load_

我有一个Chef 12.5风格的自定义资源,需要在load\u current\u value块中“require”它之前安装gem。我试图使用一个
chef_gem
资源,但是当我在那里使用它时,我在chef_gem上得到了一个命名错误。这项工作:

load_current_value do
  Chef::Resource::ChefGem.new 'inifile' do
    compile_time true
  end
  require 'inifile'
  # ... load_current_value code
end
。。。但是显式调用
Chef::Resource::ChefGem.new似乎是错误的,或者至少是“不雅观的”


这使得gem可以用于操作,这很方便。但我想知道是否有更合适的方法在load\u current\u value块中(或之前)安装chef\u gem?

如果我从chef 12.8中正确地回忆,那么可以(查找gem关键字):


我认为这就是您要寻找的“东西”。

如果我从chef 12.8中正确地回忆起,可以(查找gem关键字):


我想这就是你要找的东西。

是的,谢谢。这是正确的答案。这在一般情况下起作用,解决了我的
load\u current\u value
问题。我被推迟了,因为以这种方式使用
gem'mysql2'
会崩溃(希望是暂时的问题,因为缺少包依赖性),所以我放弃了使用元数据解决方案,并且忘记了使用元数据解决方案。问题是它在chef启动时安装gem,这是在编译器或mysql库可用之前(假设通过配方安装)。这可能会导致订购困难…而且它要求您的cheffed主机都可以访问rubygems.org或代理进行临时gem下载。安全问题很有趣。是的,谢谢。这是正确的答案。这在一般情况下有效,并解决了我的
加载当前值
问题。因为我们ing
gem'mysql2'
以这种方式崩溃(希望是暂时的问题,因为缺少包依赖关系),所以我放弃了使用元数据解决方案,并且忘记了。问题是它在chef启动时安装gem,这是在编译器或mysql库可用之前(假设你是通过菜谱安装的)。这可能会导致订购困难……而且需要你的cheffed主机都可以访问rubygems.org或代理进行临时gem下载。安全问题很有趣。
Specifies a gem dependency to be installed via the chef_gem resource after
all cookbooks are synchronized, but before any other cookbook loading is
done. Use this attribute once per gem dependency.