2016-04-10 161 views
1

我想初始化一个空的厨师属性,像这样:附加到厨师阵列属性

node.default['tool_list'] = Array.new

,我想将元素添加到这个数组的菜谱运行,并最终使用完整的数组对食谱中最后一个食谱的输入。

因此,作为每个配方运行,我想追加到这样的属性:

node['tool_list'] << "tool:Python_2.7"

,我在我的最后做了几次不同的工具,并最终引用的资源食谱:

resource "example" do 
    labels   node['tool_list'] 
end 

除了这似乎不工作,最后的属性看起来是空白的。我究竟做错了什么?追加到像这样的属性的正确方法是什么?

回答

2

这真的很不推荐。数组没有任何分层合并的语义,所以东西变得很奇怪。更好的方法是使用散列,然后使用node['tool_list'].keys或类似的东西。此外,您可能会陷入编译/收敛差异,需要将事情包装为懒惰评估(lazy { node['tool_list'].keys })。