ruby - 在 Chef 中将助手与无提供程序的 12.5 样式自定义资源 (LWRP) 结合使用

标签 ruby chef-infra lwrp

cookbook/libraries/rn_helper.rb:

def sample_func
  puts "woohoo"
end

Recipe/资源/rn.rb:

action :create do
  sample_func
end  

以上代码完美运行。下面的代码没有:

cookbook/libraries/rn_helper.rb:

module SampleModule
  def sample_func
    puts "woohoo"
  end
end

Recipe/资源/rn.rb:

extend SampleModule

action :create do
  sample_func
end  

错误如下: NameError:自定义资源 [usr.bin.foo] 有一个错误:NameError:没有名为“sample_func”的资源、方法或局部变量用于“来自 Recipe some_cookbook 操作提供程序“usr.bin.foo”的 LWRP 资源 some_resource”

这是一种新型的 Chef 12.5 自定义资源——没有提供程序文件。一切都在资源本身中描述。

如何使用新型自定义资源语法“模块化”我的助手?

最佳答案

您可以访问内部“ Action 类”来添加方法:

action_class do
  include SampleModule
end

关于ruby - 在 Chef 中将助手与无提供程序的 12.5 样式自定义资源 (LWRP) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514530/

相关文章:

ruby - 当我要求它匹配数字时,为什么扫描匹配 ""个字符?

ruby - Chef only_if 属性等于 true

ruby - Chef LW 资源属性默认值如何引用另一个属性?

chef-infra - 如何让 Chef 自定义 lwrp 实现通知和 not_if?

environment-variables - 如何使用 Chef Recipe 来设置环境变量?

amazon-ec2 - 测试厨房:如何读取 kitchen.yml 中的平台特定属性

ruby - Heroku:未找到且进程已退出

ruby - 使用 Nokogiri 解析 XML 文件以确定路径 (Ruby)

ruby-on-rails - 使 rails 中的数组仅显示数字

chef-infra - Chef : No candidate version available for mod_security2 for Ubuntu 16. 04