1) Ich habe einen Datensack wie folgt:
%Vor%2) In meinem Rezept bekomme ich den Hash wie folgt.
%Vor%3) Auch in meinem Rezept habe ich eine Vorlage wie folgt:
%Vor%4) Ich muss meine Vorlage so aussehen lassen
%Vor%Meine Frage ist das. Wie gebe ich den Hash an die Vorlage weiter, damit ich den Hash durchlaufen und die Vorlage erstellen kann? Ich bin kein starker Ruby Coder.
zum Beispiel:
%Vor%Es gibt einige kleine Unstimmigkeiten in Ihrem Setup. In Ihrem Datenpaket weisen Sie IP-Adressen einen Namen zu (indem Sie einen Hash in Ihrem JSON verwenden). Sie scheinen jedoch den Namen in Ihrer generierten Vorlage überhaupt nicht zu verwenden. Dies hat einige Auswirkungen, die Sie beachten sollten:
Bei der Verwendung von assoziativen Arrays (in Ruby oder JavaScript-Objekten aufgerufene Hashes) wird die Reihenfolge der Elemente im Allgemeinen nicht beibehalten und kann sich beim Hinzufügen weiterer Elemente erheblich ändern. Während einige Anstrengungen in Ruby 1.9 unternommen werden, um die Einfügereihenfolge beim Durchlaufen des Hash zu erhalten, sollten Sie sich im Allgemeinen nicht darauf verlassen. Dies führt zu zwei möglichen Alternativen zur Verbesserung Ihres Datenbeutels. Welche zu wählen ist hängt von Ihrem tatsächlichen Anwendungsfall ab:
server<Number>
in Ihrem Datenpaket, aber server.<Number>
in Ihrer Vorlage. Auf diese Weise können wir den Schlüssel verwenden, um Ihre Server zu benennen und möglicherweise die generierten Namen zu überschreiben. Wenn Sie das Array in Ihrem Datenbeutel verwenden, also wenn Sie etwas in der Art haben:
%Vor%Sie können das Array wie folgt in Ihrer Vorlage durchlaufen:
%Vor%Dies verwendete die ERB-Vorlagensprache , um Ihre Datei zu erstellen. Es verwendete die Methode each_with_index , um über jedes Element im Array zu iterieren.
Wenn Sie stattdessen die Hash-Variante verwenden, vorausgesetzt, Sie haben die Schlüssel in Ihrem Datenbeutel so geändert, dass sie der Syntax in Ihrer endgültigen generierten Datei entsprechen, können Sie den Hash wie folgt durchlaufen:
%Vor%Dies verwendet die Methode each_pair des Hashs, um die Schleife zu durchlaufen jedes Schlüssel-Wert-Paar und erzeugt somit eine Ausgabezeile für jedes dieser Paare.
Als letzte Bemerkung ist Ihre Syntax zum Übergeben von Daten an die Vorlage in Ihrem Rezept seltsam. Als erstes sollten Sie niemals Namen verwenden, die mit einem Großbuchstaben für Variablen beginnen (wie Ihre ZOOKEEPER
Variable). In Ruby identifizieren diese Konstanten (wie Wertkonstanten, Klassen, Module, ...). Verwenden Sie stattdessen einen Kleinbuchstaben. Ruby verwendet snake_case für Variablennamen per Konvention.
Wenn Sie den Wert an Ihre Vorlage übergeben, können Sie die Variable einfach übergeben:
%Vor%