只有在模板中定义变量时,才会执行Puppet 3循环执行

时间:2012-11-01 03:16:10

标签: ruby templates loops erb puppet

我正在尝试仅在定义index时创建循环。但它看起来像 erb无法处理if子句中的循环。

<% if(@index) %>
index <% index_files.each do |i| %> <%= i %> <% end %>;
<% end %>

预期结果是: index index.html index.php 要么 ""

我得到的语法错误:

我的平面方法失败了:

<% if(@index_files) %> try_files <% end %>  <% index_files.each do |i| %> <%= i %> <% end %>

我将index_files定义为undef =&gt;打破了每个循环 我定义了一个空数组=&gt;因为定义了一个空数组,所以它不起作用。

也许我可以查看index_files的长度? 或者我需要一种完全不同的方法来解决问题吗?

2 个答案:

答案 0 :(得分:1)

我也在做同样的事情,它也适用于我,也适用于nginx;)。

例如:<% if @proxy_ignore_headers %> proxy_ignore_headers<% proxy_ignore_headers.each do |i| -%> <%= i %><% end -%>;

这就像魅力一样,与你唯一不同的是对if条件使用(),但我打赌puppet支持()。这很奇怪,也许你已经按下了一个糟糕的组合,产生了一个无法看到的角色,但它正在弄乱你的代码,试着从头开始写以防万一。

You can see the full template here

祝你好运

答案 1 :(得分:-1)

乍一看,你只需要改变

index_files.each

@index_files.each