目前我在食谱中有以下代码
hadoop_nodes = search(:node, "(role:mapreduce-datanode OR role:mapreduce-namenode) AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
hadoop_nodes.map!{ |h| {:host_entry => "#{h['ipaddress']} #{h['fqdn']} #{h['hostname']}"}}
hadoop_nodes.sort!{ |x, y| x[:host_entry] <=> y[:host_entry] }
有
的模板文件<%- @hadoop_nodes.each do |hadoop_node| -%>
<%= hadoop_node[:host_entry] %>
<%- end -%>
我想搬家
hadoop_nodes.map!{ |h| {:host_entry => "#{h['ipaddress']} #{h['fqdn']} #{h['hostname']}"}}
到模板文件,但不知道如何,任何帮助
答案 0 :(得分:1)
模板与普通代码没有什么不同,只是您需要添加标记。
<%
代码。 <%=
表示您想要输出的内容。因为它们都是围绕物体的环路,所以你不必改变太多:
<% @hadoop_nodes.each do |hadoop_node| %>
<%= "#{hadoop_node['ipaddress']} #{hadoop_node['fqdn']} #{hadoop_node['hostname']}" %>
<% end %>
但您的请求却遗漏了sort
。你也可以这样做:
<% @hadoop_nodes.sort{|x, y| x['hostname'] <=> y['hostname'] }.each do |hadoop_node| %>
答案 1 :(得分:0)
为什么要将其移入模板文件?在模板之外可能会更好。