将变量传递给厨师模板的正确方法是哪种方式?
发布时间: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魔法来自动检测参数的哈希值). 我会说没有明确的最佳/正确的方式,但红宝石风格指南似乎更喜欢第一个版本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |