加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将变量传递给厨师模板的正确方法是哪种方式?

发布时间:2020-12-16 19:35:12 所属栏目:百科 来源:网络整理
导读:查看此官方文档: https://docs.chef.io/resource_template.html我看到将变量传递给Template资源的示例,该变量使用“{”,“({”或“(”来定义变量范围). 我找不到解释差异的地方,或者为什么我会使用一种形式而不是另一种形式.运行食谱时真的有什么实际区别吗
查看此官方文档: https://docs.chef.io/resource_template.html我看到将变量传递给Template资源的示例,该变量使用“{”,“({”或“(”来定义变量范围).

我找不到解释差异的地方,或者为什么我会使用一种形式而不是另一种形式.运行食谱时真的有什么实际区别吗?

例1:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables(
  :config_var => node['configs']['config_var']
)
end

例2:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables{
  :config_var => node['configs']['config_var']
}
end

例3:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables({
  :config_var => node['configs']['config_var']
})
end

解决方法

这是一个红宝石的东西,而不是厨师的事情.

当您使用(:key => value)时,您传入的是隐含的哈希. Ruby决定它在parens中看到的内容是类似哈希的,并自动转换为哈希.

使用{}时,实际上是在传递一个块.然后Ruby执行块,并将块的结果作为参数传回.到目前为止,我发现这种符号最有可能给你带来麻烦.

当您使用({:key => value})时,您明确地将哈希传递给方法. parens显式定义方法参数,括号是定义哈希的标准表示法(没有ruby魔法来自动检测参数的哈希值).

我会说没有明确的最佳/正确的方式,但红宝石风格指南似乎更喜欢第一个版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读