J'ai besoin de charger un fichier yaml dans Hash,
Que devrais-je faire?
Utilisez le module YAML:
http://Ruby-doc.org/stdlib-1.9.3/libdoc/yaml/rdoc/YAML.html
node = YAML::parse( <<EOY )
one: 1
two: 2
EOY
puts node.type_id
# prints: 'map'
p node.value['one']
# prints key and value nodes:
# [ #<YAML::YamlNode:0x8220278 @type_id="str", @value="one", @kind="scalar">,
# #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar"> ]'
# Mappings can also be accessed for just the value by accessing as a Hash directly
p node['one']
# prints: #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar">
http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm
J'utiliserais quelque chose comme:
hash = YAML.load(File.read("file_path"))
Une version plus simple de la réponse de venables:
hash = YAML.load_file("file_path")
Vous pouvez rencontrer un problème mentionné à cette question connexe , à savoir que le fichier ou flux YAML spécifie un objet dans lequel le chargeur YAML tentera de convertir les données. Le problème est que vous aurez besoin d'un Gem apparenté qui connaît l'objet en question.
Ma solution était assez banale et est fournie comme réponse à cette question. Faites ceci:
yamltext = File.read("somefile","r")
yamltext.sub!(/^--- \!.*$/,'---')
hash = YAML.load(yamltext)
En substance, vous supprimez le texte du classificateur d'objets du texte yaml. Ensuite, vous l'analysez/chargez.