2017-04-22 91 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

我很笨。它看起來像我自己的測試之一是生成一個適當的數組,但它輸出的方式我無法分辨。 感謝您的幫助。 –