如何从puppet中删除ruby模板中的额外空白

如何从puppet中删除ruby模板中的额外空白,puppet,erb,Puppet,Erb,我想使用puppet在文件中放入一些值,但在ruby模板中执行以下操作时: <% @_zoo_cfgs.each do |zooconfig| -%> <%=zooconfig -%> <% end -%> 但我想要以下内容: server.1=a1-dev-mem333.lab.lynx-connected.com:2888:3888(no trailing whitespace) 在值之前或之后的文件中没有额外的空白。有人能告诉

我想使用puppet在文件中放入一些值,但在ruby模板中执行以下操作时:

    <% @_zoo_cfgs.each do |zooconfig| -%>
    <%=zooconfig -%>
    <% end -%>
但我想要以下内容:

server.1=a1-dev-mem333.lab.lynx-connected.com:2888:3888(no trailing whitespace)

在值之前或之后的文件中没有额外的空白。有人能告诉我怎么做吗?

当您用
-%>
关闭ERB标记时,关闭标记后面的任何换行符都会被抑制。但是,如果下一个字符是任何其他字符,例如空格字符,则不存在抑制。在您的例子中,可能更重要的是,在任何情况下都不会抑制模板下一行的前导空格

处理这种情况至少有两种方法

  • 消除缩进(并确保模板中没有拖尾空白):

  • 完全摆脱迭代,可能是这样的:

如果空格是变量值的一部分,请使用Ruby字符串函数来消除它,例如

<%= zooconfig.rstrip %>

<% @_zoo_cfgs.each do |zooconfig| -%>
<%=zooconfig -%>
<% end -%>
<%# assumes that @_zoo_cfgs is an array: -%>
<%= @_zoo_cfgs.join("\n") -%>
<%= zooconfig.rstrip %>