この公式ドキュメントを見ると、 https://docs.chef.io/resource_template.html 「{」、「({」、または「( "変数のスコープを設定します。
違いを説明している場所や、あるフォームを他のフォームよりも使用する理由がわかりません。レシピを実行するときに実際に何か違いはありますか?
template '/tmp/config.conf' do
source 'config.conf.erb'
variables(
:config_var => node['configs']['config_var']
)
end
template '/tmp/config.conf' do
source 'config.conf.erb'
variables{
:config_var => node['configs']['config_var']
}
end
template '/tmp/config.conf' do
source 'config.conf.erb'
variables({
:config_var => node['configs']['config_var']
})
end
これはRuby事であり、シェフの事ではありません。
( :key => value )
を使用すると、暗黙のハッシュが渡されます。 Rubyは、括弧内に表示されるものがハッシュに似ていると判断し、自動的にハッシュに変換します。
{ }
を使用すると、実際にはブロックが渡されます。 Ruby次に、ブロックを実行し、ブロックの結果を引数として返します。この表記は、トラブルを引き起こす可能性が最も高いことがわかりました。
({ :key => value })
を使用すると、明示的にハッシュがメソッドに渡されます。括弧はメソッドの引数を明示的に定義し、角括弧はハッシュを定義するための標準的な表記法です(Ruby引数のハッシュ値を自動検出するマジック)。
決定的な最善/正しい方法はないと思いますが、Rubyスタイルガイドは最初のバージョンを好むようです。