我是ruby和Chef的新手,在我的食谱中定义属性时遇到了语法问题。以下是相关代码:
default[:my_cookbook][:stuff] = {
:foo_bar => {
:grok => ['Hi'],
:2grok => ['Bye'],
...
似乎我无法使用数字开始2grok ..有没有办法逃避这个,或者使用正确的语法' 2grok'?
答案 0 :(得分:5)
如果要使用数字开始符号,则需要将其括在引号中:
:'2grok' => ['Hi']
如果你使用双引号,ruby interpolates字符串在里面:
:"#{1 + 1}grok"
此外,您可以使用percent-notation:
%s{2grok}
最后,您可以通过在字符串上调用to_sym
方法来获取符号:
'2grok'.to_sym => ['Hi']
答案 1 :(得分:2)
Mladen的回答在Ruby方面是正确的。您只能使用引号在符号名称的开头使用数字。请记住,您还必须使用它们来访问哈希值。但是不应该使用符号来定义cookbook中的属性。 Chef Style Guide recommends using strings instead