如何在 chef elb 模板中迭代

How to iterate in a chef elb template

我有一个厨师 ruby elb 模板,我不是 ruby 开发者:

我如何遍历下面的内容?

for iter in node["cpu"]["total"].lentgh do
   server unix:/tmp/aiohttp_<%= iter %>.sock fail_timeout=0;
end

我想要每个 cpu 核心一行,例如1,2,3,4

server unix:/tmp/aiohttp_0.sock fail_timeout=0;
server unix:/tmp/aiohttp_1.sock fail_timeout=0;
server unix:/tmp/aiohttp_2.sock fail_timeout=0;
server unix:/tmp/aiohttp_3.sock fail_timeout=0;

您将 <% %> 标记用于 Erb 中的循环之类的结构性内容,或者更常见的是 <%- -%> ,它还会修剪空白行上的空格。虽然 for 循环是 Ruby 中的一个东西,但非常不推荐使用它们,惯用的 Ruby 使用迭代器方法代替。对于 "do it X times" 那将是 Numeric#times 方法。另外 total 键只是一个数字,所以你不能像那样使用 .length

<%- node["cpu"]["total"].times do |i| -%>
server unix:/tmp/aiohttp_<%= i %>.sock fail_timeout=0;
<%- end -%>