Ich habe den folgenden Code-Block, und ich mag die Ausgabe in ein Array drehen, anstatt eine Reihe von Strings, aber ich bin nicht wirklich sicher, jetzt, dass in schieben.Ruby-Strings in ein Array schieben
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"
}
}
Die Serverfunktion sollte eine Array-Art wie diese aufnehmen, in der alle Variablen erweitert und aufgelöst werden.
[
'server1:8301 server1:8301',
'server1:8302 server1:8302',
'server2:8301 server2:8301',
...
]
Ich habe versucht, für den Test ein paar wirklich einfache Version davon in irb zu machen, aber ich weiß es einfach nicht wirklich das, was ich tue.
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
Fragen Sie, wie man ein Array von Strings erstellt? – chris
Ja, ein Array von Strings, basierend auf dem Mapping des Backends-Arrays und der Erweiterung des Bereichs. –