2017-04-22 181 views
0

我有下面的代码块,我想将输出到一个数组,而不是一系列的字符串,但我现在真的不知道要推动这一英寸红宝石推字符串数组

default['max_log']['instances'] = 20 

servers haproxy_backends('max_logger').map { |h| 
    ("1".."#{node['max_log']['instances']}").each { |i| 
    "#{h}:83#{i} #{h}:83#{i} check inter 10s rise 2 fall 3" 
    } 
} 

服务器功能应该摄取一个像这样的数组,其中所有变量都被扩展和解析。

[ 
    'server1:8301 server1:8301', 
    'server1:8302 server1:8302', 
    'server2:8301 server2:8301', 
    ... 
] 

我试过在irb中测试一些非常简单的版本,但我真的不知道我在做什么。

a = [] 
# => [] 

def d 
    ('01'..'10').each { |i| puts i } 
end 
# => :d 

a.push(d) 
01 
02 
03 
04 
05 
06 
07 
08 
09 
10 

# => ["01".."10"] 
a 

# => ["01".."10"] 
d 
01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
# => "01".."10" 

backends = ['maxlog-1', 'maxlog-2'] 
backends.map { |h| (1..5).each { |i| puts "#{h}:#{i}" } } 

ruby test.rb 
# => maxlog-1:1 
# => maxlog-1:2 
# => maxlog-1:3 
# => maxlog-1:4 
# => maxlog-1:5 
# => maxlog-2:1 
# => maxlog-2:2 
# => maxlog-2:3 
# => maxlog-2:4 
# => maxlog-2:5 
+0

你问如何创建一个字符串数组? – chris

+0

是的,基于映射后端数组和扩展范围的字符串数组。 –

回答

1

该方法将采用一个数组并根据范围将元素追加到它。应该给出一个足够的例子来做你正在做的事情。

myarray = []; 

def d(out, min, max) 
    (min.to_s..max.to_s).each do |idx| 
     out << "my string #{idx}" 
    end 
end 

d(myarray, 1, 10) 
puts(myarray) 
+0

我很笨。它看起来像我自己的测试之一是生成一个适当的数组,但它输出的方式我无法分辨。 感谢您的帮助。 –