[chef] Re: Templates don't fail when values are missing


Chronological Thread 
  • From: Peter Loron < >
  • To:
  • Subject: [chef] Re: Templates don't fail when values are missing
  • Date: Tue, 16 Apr 2013 15:34:58 -0700

Thanks! I will check that out!

-pete

On Apr 16, 2013, at 2:12 PM, Mathias Lafeldt 
< >
 wrote:

> Peter,
> 
> You might want to use Hash#fetch in your template, which raises a
> KeyError if a key can't be found (thereby aborting the chef run).
> 
> See http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch
> 
> -Mathias
> 
> 
> On Mon, Apr 15, 2013 at 9:45 PM, AJ Christensen 
> < >
>  wrote:
>> In ruby, Hash[nil] => nil; so, explicitly bind your hash keys to
>> 'variables' in the template and then check for presence of the ivar.
>
>> An alternate workaround: <%= if @property.key?('foobar') %>
>
>> Cheers,
>
>> AJ
>
>
>> On 16 April 2013 06:48, Peter Loron 
>> < >
>>  wrote:
>>> I have a large (hundreds of properties, dozens of templates) set of 
>>> templates I'm porting from Nant to Chef. The properties in the old system 
>>> are scattered across multiple files and while aggregating the properties 
>>> into data bags and adjusting the templates, I have missed some values.
>>> 
>>> The call in the recipe to merge each template with the properties from 
>>> the data bags works, but values that are not present in the hash are 
>>> simply empty in the generated template. The substitution fails silently.
>>> 
>>> For example, if I have this in the template:
>>> 
>>> <foobar value="<%= @property['foobar'] %>" />
>>> 
>>> … and the 'foobar' key/value pair is not present, I wind up with this in 
>>> the generated file:
>>> 
>>> <foobar value="" />
>>> 
>>> 
>>> 
>>> Is there any way to get Chef to throw a warning or error in this case?
>>> 
>>> Thanks.
>>> 
>>> -Pete




Archive powered by MHonArc 2.6.16.

§