Comment puis-je parse un fichier YAML?
Je voudrais savoir comment analyser un fichier YAML avec le contenu suivant:
---
javascripts:
- fo_global:
- lazyload-min
- holla-min
Actuellement, je suis en train de l'analyser de cette façon:
@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
Mais il ne semble pas fonctionner et me donne une erreur que la valeur est nulle.
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
Si j'essaie cela, il met de l'ensemble de la chaîne (fo_globallazyload-minholla-min):
if !@custom_asset_packages_yml.nil?
@custom_asset_packages_yml['javascripts'].each{ |js|
js['fo_global']
}
end
- pouvez-vous donner la sortie du script lorsque vous l'exécutez? les fichiers au bon endroit? vous pouvez toujours le feu jusqu'à une console Rails et de voir si ruby peut voir que le chemin ainsi.
- Oui, le fichier existe et est dans le bon endroit. Ive mis à jour mon post avec l'erreur.
Vous devez vous connecter pour publier un commentaire.
Peut-être que je manque quelque chose, mais pourquoi essayer d'analyser le fichier? Pourquoi ne pas charger le fichier YAML et d'examiner l'objet(s) que résultat?
Si votre YAML est dans
some.yml
, puis ceci:me donne
YAML.load
prend un YAML chaîne,YAML.load_file
prend une relative chemin d'accès au fichier.load_file
méthode n'existe pas selon la documentation de YAML. Cette méthode ainsi que d'autres, sont documentés au cours des ici. J'ai trouvé la version de Psy est inclus avec Ruby sur ce site. lol plus sérieusement Ruby, vous avez besoin pour obtenir votre merde ensemble - comme littéralement.J'ai eu le même problème, mais aussi voulait obtenir le contenu du fichier (après les DONNÉES préliminaires).
C'est la meilleure solution que j'ai trouvé:
Source et discussion: https://practicingruby.com/articles/tricks-for-working-with-text-and-files
Ici est la seule ligne que j'utilise, depuis le terminal, pour tester le contenu du fichier yml(s):