ruby hash yaml

Convierta Ruby Hash en YAML



(2)

Necesito convertir un hash como el proporcionado a continuación en YAML legible. Parece que puedo alimentar a YAML::load una cadena, pero creo que necesito convertirlo primero en algo como esto:

hostname1.test.com: public: 51 private: 10 {"hostname1.test.com"=> {"public"=>"51", "private"=>"10"}, "hostname2.test.com"=> {"public"=>"192", "private"=>"12"} }

Sin embargo, no estoy seguro de cómo hacer esa conversión en esa cadena de manera efectiva.

Revisé la documentación HASH y no pude encontrar nada para to_yaml . Lo encontré buscando to_yaml que está disponible cuando require yaml . También traté de usar el método de collect Enumerable, pero me confundí cuando tuve que repetir el valor (otro hash).

Estoy tratando de usar " Convertir hash a cadena en Ruby " como referencia. Mi idea era alimentar eso en YAML::load y eso generaría el YAML que quería.


Así es como lo haría:

require ''yaml'' HASH_OF_HASHES = { "hostname1.test.com"=> {"public"=>"51", "private"=>"10"}, "hostname2.test.com"=> {"public"=>"192", "private"=>"12"} } ARRAY_OF_HASHES = [ {"hostname1.test.com"=> {"public"=>"51", "private"=>"10"}}, {"hostname2.test.com"=> {"public"=>"192", "private"=>"12"}} ] puts HASH_OF_HASHES.to_yaml puts puts ARRAY_OF_HASHES.to_yaml

Qué salidas:

--- hostname1.test.com: public: ''51'' private: ''10'' hostname2.test.com: public: ''192'' private: ''12'' --- - hostname1.test.com: public: ''51'' private: ''10'' - hostname2.test.com: public: ''192'' private: ''12''

La clase Object tiene un método to_yaml. Lo usé y generó el archivo YAML correctamente.

No, no es así.

Esto es de una sesión IRB recién abierta:

Object.instance_methods.grep(/to_yaml/) => [] require ''yaml'' => true Object.instance_methods.grep(/to_yaml/) => [:psych_to_yaml, :to_yaml, :to_yaml_properties]


Puede usar el método to_yaml en un hash para esto, creo, después de que require yaml