ruby - chef -- 将属性散列传递给资源

标签 ruby chef-infra chef-recipe knife chef-solo

chef 有很多resources\providers\definitions,每个resources\providers\definitions 都有可以设置的属性。例如,see这个和this .

通过检查几个定义,很清楚为特定资源\提供者\定义提供的属性被打包到由 param 变量指向的散列中。

我想知道是否可以在不解压缩哈希的情况下使用资源\提供者\定义。这是伪代码或我的意图:

attr = { :name => "/tmp/folder", :owner => "root", :group => "root", :mode => 0755, :action => :create }
directory attr

而不是这样写:

directory "/tmp/folder" do
    owner "root"
    group "root"
    mode 0755
    action :create
end

是否有实现类似目标的本地方法? 谢谢你,罗斯。

最佳答案

你可以试试下面的方法

attrs = { .. }

directory "/tmp/folder" do
  attrs.each do |method_name, value|
    send(method_name, value)
  end
end

关于 Ruby 发送的更多信息:http://apidock.com/ruby/Object/send

关于ruby - chef -- 将属性散列传递给资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404352/

相关文章:

ruby-on-rails - 生成现有数组的所有组合的数组

chef-infra - 使用 chef 安装 windows 应用程序

chef-infra - 将 gem 源更改为 Chef Recipe 依赖项

chef-infra - 如何将 Chef 客户端指向不同的 Chef 服务器

ruby-on-rails - 在运行包更新时避免 RSA key 指纹

jenkins - Chef 卡在 "Recipe: java::openjdk"

ruby - 在 Sinatra 中间件中访问 session

ruby-on-rails - 即使成功 rake db :create 后,Heroku 上也没有数据库连接

javascript - 使用 Google map 和 Ruby 添加标记

chef-infra - 凹凸 Recipe 版本 - 怎么样?