Tengo que cargar un archivo yaml en Hash,

¿Qué debo hacer?

  • Por favor, actualice su respuesta seleccionada. La que usted ha seleccionado no responde a tu pregunta (independientemente de si es más informativo o no)
InformationsquelleAutor Croplio | 2010-08-14

4 Comentarios

  1. 13

    Utilizar el YAML módulo:

    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

    • Esto tiende a volver Syck::Mapa (u objetos similares), no hashes. De cualquier manera tienen que devolver (o convertir) regular ruby Hash?
  2. 100

    Me gustaría usar algo como:

    hash = YAML.load(File.read("file_path"))
    • También en Ruby 2.2 símbolos son GC gustaría.
    • Mi respuesta se basa en esto, salvo que es más sencillo y un poco más legible, utilizando YAML.load_file lugar.
  3. 2

    Puede ejecutar en un problema mencionado en esta pregunta relacionada con la, es decir, que los archivos YAML o secuencia especifica un objeto en el que el YAML cargador de intento de convertir los datos. El problema es que se necesita un relacionados con la Joya que sabe acerca del objeto en cuestión.

    Mi solución fue bastante trivial y se ofrece como una respuesta a esa pregunta. Hacer esto:

    yamltext = File.read("somefile","r")
    yamltext.sub!(/^--- \!.*$/,'---')
    hash = YAML.load(yamltext)

    En esencia, usted tira el objeto clasificador de texto desde el archivo yaml de texto. A continuación, se analiza/carga.

Dejar respuesta

Please enter your comment!
Please enter your name here