2016-04-10 16 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 })のためにラップする必要があるかもしれません。

関連する問題