Gibt es eine einfache Möglichkeit, die magischen Zeichen der Flucht für die Variablensubstitution in einer buildout Konfiguration verwendet, so dass die Zeichenfolge allein gelassen wird. Mit anderen Worten, wo ich sage:Verhindern variable Substitutionen von mit buildout auftretenden
[part]
attribute = ${variable}
ich nicht wirklich es $ wollen {variable} aber lassen Sie es als Literalwert erweitern.
In der Praxis das spezifische Problem, das mir begegnet ist, ist nicht in der buildout Konfigurationsdatei selbst, sondern in einer Vorlagendatei durch das Rezept ‚collective.recipe.template‘ verarbeitet. Dies verwendet dieselbe Variablensubstitutionsengine von Buildout, die in den Konfigurationsdateien verwendet wird. Problem ist, dass die Datei, die ich als Vorlage verwenden möchte, bereits die '$ {variable}' - Syntax für ihre eigenen Zwecke in Verbindung mit dem Anwendungskonfigurationssystem verwendet, das letztendlich die Datei konsumiert.
Der einzige Weg, die ich gefunden habe, um das Problem zu bekommen, ist wie etwas zu verwenden: statt
${dollar}{variable}
: dann in der Vorlageneingabedatei
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
haben
${variable}
, die es bereits hatte.
Was dies tut, ist verursachen eine Suche nach ‚Dollar‘ Attribut gegen den Abschnitt unter Verwendung der Schablone und ersetzen sie durch ‚$‘.
Anstatt das zu tun haben, war eine Art der Hoffnung, dass man tun könnte:
\${variable}
oder vielleicht sogar:
$${variable}
und eliminiert die Notwendigkeit, ein Dummy-Attribut müssen Trick es zu tun, was ich will.
für buildout auf den Quellcode der Suche entspricht die Art und Weise es Variablensubstitution scheint kein Entkommen Mechanismus zu schaffen. Wenn es tatsächlich keinen Weg gibt, dann kennt vielleicht jemand ein alternatives Templatrezept für Buildout, das eine variable Erweiterung durchführen kann, bietet aber einen Escape-Mechanismus für jede Art von Variablen, so dass man Probleme dort vermeiden kann, wo sie sind ein Konflikt zwischen dem Expansionsmechanismus des Templating-Systems und den literalen Daten in der zu gestaltenden Datei.