[chef] Re: Re: Using arrays in templates


Chronological Thread 
  • From: Sig Lange < >
  • To:
  • Subject: [chef] Re: Re: Using arrays in templates
  • Date: Fri, 30 Jul 2010 19:20:50 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=QvqWUeTXwEwWl2RRv9NYQHXVAfiTsNENLwCHBpeiuWRcaxqH+8xsbKZTg18zHO5wC1 PIu/R1ahyohiOzBxS/+ZzztTgf4FxUwevlXWUxauPk6LmbZNHdYWVwT0KxuOPZxwOw2T jxrH5jBMR/cqUFPXxk9dPplIy1hO3f5W5a7LU=

I'm no ruby expert, but It's worth pointing out that ordering of a Hash is undefined. So the array-in-array approach works well if you intend to have exact order in and out... which you likely do.

Perhaps someone with more ruby knowledge can demonstrate a ordered hash.

~ Sig

On Thu, Jul 29, 2010 at 3:51 PM, Adam Jacob < "> > wrote:
On Wed, Jul 28, 2010 at 4:50 AM, FX < "> > wrote:
> Hi,
>
> I have a question about templates and the correct syntax.
> I have an array which contains the following data:
>
> "name1","description of name1"
> "name2","description of name2"
> ...
> "nameN","description of nameN"
>
> This array needs to be stored as an attribute of a role or node (so
> that it can be overridden)
>
> I assume it could look something like this:
>
> "host":[["name1","description of name1"],["name2","description of name2"]]

This should be a hash, not an array - you have a "name" value, which
should be the key, and the descirption is a value.

> Now the problem (at least for me) is how do I specify this in the template?
>
> I have tried this (I assume it does not work because it needs to have
> a object and not array):
>
> <% @host.each do |h| %>
> <%= host[0] %>  <%= host[1]%>
> <% end %>

This is the right syntax - you need to have <%= h[0] %> and <%= h[1]
%>, since that's the variable you create on iteration.

Adam
--
Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: ">




Archive powered by MHonArc 2.6.16.

§