Isso é coisa de rubi, não é coisa de chef.
Quando você usa ( :key => value )
, está passando um hash implícito. Ruby decide que o que vê dentro dos parens é semelhante a um hash e converte automaticamente para um hash.
Quando você usa { }
, na verdade você está passando um bloco. Ruby então executa o bloco e passa os resultados do bloco de volta como argumentos. Eu descobri que essa notação é, de longe, a mais provável de causar problemas.
Quando você usa ({ :key => value })
, você está passando explicitamente um hash para o método. Os parentes definem explicitamente os argumentos do método, e os parênteses são a notação padrão para definir um hash (sem magia rubi para detectar automaticamente o hash dos argumentos).
Eu diria que não há uma maneira melhor / certa definitiva, mas os guias de estilo ruby parecem preferir a primeira versão.