2017-04-22 5 views
0

I次のコードブロックを持っていると私は、一連の文字列ではなく配列に出力をオンにしたいが、私はそれをプッシュする今、本当にわからない。ルビー

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

私はダムです。私自身のテストの1つが適切な配列を生成していたように見えますが、出力していた方法ではわかりませんでした。 ありがとうございます。 –