Ich möchte wissen, wie man eine YAML-Datei mit folgendem Inhalt analysiert:
---
javascripts:
- fo_global:
- lazyload-min
- holla-min
Derzeit versuche ich es folgendermaßen zu analysieren:
@custom_asset_packages_yml = (File.exists?("#{RAILS_ROOT}/config/asset_packages.yml") ? YAML.load_file("#{RAILS_ROOT}/config/asset_packages.yml") : nil)
if !@custom_asset_packages_yml.nil?
@custom_asset_packages_yml['javascripts'].each{ |js|
js['fo_global'].each{ |script|
script
}
}
end
Aber es scheint nicht zu funktionieren und gibt mir den Fehler, dass der Wert Null ist.
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Wenn ich das versuche, wird der gesamte String gelöscht (fo_globallazyload-minholla-min):
if !@custom_asset_packages_yml.nil?
@custom_asset_packages_yml['javascripts'].each{ |js|
js['fo_global']
}
end
Antworten:
Vielleicht fehlt mir etwas, aber warum sollte ich versuchen, die Datei zu analysieren? Warum nicht einfach die YAML laden und die resultierenden Objekte untersuchen?
Wenn sich Ihre Beispiel-YAML in befindet
some.yml
, gilt Folgendes :gibt mir
quelle
YAML.load
Nimmt eine YAML-Zeichenfolge undYAML.load_file
einen relativen Dateipfad.Ich hatte das gleiche Problem, wollte aber auch den Inhalt der Datei erhalten (nach der YAML-Front-Angelegenheit).
Dies ist die beste Lösung, die ich gefunden habe:
Quelle und Diskussion: https://practicingruby.com/articles/tricks-for-working-with-text-and-files
quelle
Hier ist der eine Liner, den ich vom Terminal aus verwende, um den Inhalt von yml-Dateien zu testen:
quelle