Reflexion von erb Variablen
-
12-10-2019 - |
Frage
Ich bin mit einer Puppe Vorlage, die eine erb Interpretation der Vorlagendatei der Fall ist. Ich möchte alle die Variablen zur Verfügung, mich kennen, aber es gibt Variablen zur Verfügung (beispielsweise fqdn), die nicht durch eine der Reflexionsmethoden aufgeführt sind, ich bin mir dessen bewusst, und zwar keiner von diesen:
<% Module.constants.each do |v| %># module constant: <%= v %>
<% end %>
<% Kernel.local_variables.each do |v| %># local variable: <%= v %>
<% end %>
<% Kernel.instance_variables.each do |v| %># instance variable: <%= v %>
<% end %>
<% Module.class_variables.each do |v| %># class variable: <%= v %>
<% end %>
<% Kernel.global_variables.each do |v| %># global variable: <%= v %>
<% end %>
Gibt es ein zusätzlichen Reflexionsverfahren für erb, dass diese mich offenbaren wird?
Lösung
"Alle Client-Variablen" sollten tun, was Sie wollen
Andere Tipps
Sie wissen nicht wirklich über Puppen Vorlagen, aber wenn fqdn
eine lokale Variable ist, dann local_variables
Aufruf (wie in self.local_variables
) sollte es angezeigt werden soll.
Ich weiß nicht so viel wie ich das über erb möchten eingebaute Mittel der Reflexion, aber mit Puppet, ich denke, die Hash von scope.to_hash
zurückgegeben wird, ist wahrscheinlich das, was Sie wollen. Aus Templat Referenz :
<% scope.to_hash.keys.each do |k| -%>
<%= k %>
<% end -%>
Alternativ kann, wenn Sie wollen einfach nur einen einmaligen Blick auf den Variablen die Agentenknoten liefern, Sie facter
auf dem Knoten ausgeführt werden kann; Das ist, wie Puppet alle, dass Informationen an erster Stelle kommt.