Ausgabe ruby-array über ein erb-template
Ich bin mit puppet, um eine Reihe von Konstanten für ein ruby-Programm.
Ich muss ein array von Hostnamen, über die mein Programm Durchlaufen.
In der bash-Skript, ich wurde vor der Verwendung dieses, ich musste das einfach wie eine Marionette variable
hosts => "host1,host2"
die ich zur Verfügung gestellt, um die bash-script als
HOSTS=<%= hosts %>
offensichtlich ist dies nicht ganz der Arbeit für die ruby - ich brauche es in dem format
hosts = ["host1","host2"]
seit
p hosts
und
puts my_array.inspect
bieten die Ausgabe
["host1","host2"]
Hoffte ich, einen von denen benutzen.
Leider kann ich nicht für das Leben von mir herauszufinden, wie man das arbeiten.
Ich habe versucht, jede der folgenden:
<% p hosts %>
<% puts hosts.inspect %>
Ich irgendwo gefunden, wo Sie angegeben, ich würde setzen müssen "function_" vor der Funktion, die nennt...das scheint nicht zu funktionieren. Ich mich eingelebt habe auf einem iterativen Modell:
[<% hosts.each do |host| -%>"<%=host%>",<% end -%>]
diese Werke, dass Sie mir
["host1","host2",]
aber das nachgestellte Komma fühlt sich schlampig. das ganze fühlt sich schlampig. Hat jemand eine bessere Möglichkeit? Oder ist das, was ich getan habe, die beste option?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab ich gelöst (Puppen-v3.0.1) auf diese Weise:
Wenn $puppet_var ein array wie [ "a", "b" ] die Ausgabe sollte ungefähr so Aussehen:
Ruby erlaubt die Benutzung des %w-shorcut in Klammern initialisieren arrays. Dies tun:
Verwenden
to_json
;to_s
scheint, wie es sollte funktionieren in diesem Fall. Tatsächlich, Ihre ersteHOSTS=<%= hosts %>
scheint, wie es funktionieren sollte. Bist du sicher, dass es nicht?