De acuerdo con la documentación de YAML, es posible pasar un hash of options al método .to_yaml
.¿Cómo obtener las opciones de formato para el método to_yaml que funciona en ruby 1.9.1?
Actualmente, cuando paso las opciones sugeridas por la documentación, no funciona, se ignora el hash.
irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> user = { "1" => { "name" => "john", "age" => 44 } }
user.to_yaml
=> "--- \n\"1\": \n name: john\n age: 44\n"
Ahora, pasando algunas opciones:
irb(main):014:0> user.to_yaml(:Indent => 4, :UseHeader => true, :UseVersion => true)
=> "--- \n\"1\": \n name: john\n age: 44\n"
irb(main):015:0> user.to_yaml(:Separator => "\n")
=> "--- \n\"1\": \n name: john\n age: 44\n"
irb(main):016:0> user.to_yaml(:separator => "\n")
=> "--- \n\"1\": \n name: john\n age: 44\n"
irb(main):017:0> RUBY_VERSION
=> "1.9.1"
Como se puede ver, que pasa las opciones no funcionan. Sólo los valores por defecto:
YAML::DEFAULTS
=> {:Indent=>2, :UseHeader=>false, :UseVersion=>false, :Version=>"1.0", :SortKeys=>false, :AnchorFormat=>"id%03d", :ExplicitTypes=>false, :WidthType=>"absolute", :BestWidth=>80, :UseBlock=>false, :UseFold=>false, :Encoding=>:None}
¿Es esto un error conocido? o ¿Actualmente está funcionando para cualquiera que use Ruby 1.9.1?
Obtengo el mismo comportamiento que está viendo. Parece que esto se ha preguntado antes sin resolución: http://stackoverflow.com/questions/1054730/is-it-possible-to-specify-formatting-options-for-toyaml-in-ruby –
Sí, en eso caso de que estaban utilizando 1.8.7, me preguntaba si funciona para 1.9.1, parece ser un problema sin una respuesta concisa. – jpemberthy
Me encantaría saber la respuesta a esta. Hace tiempo que renuncié y escribí mi propia función "ordenar el yaml" (para 1.8.7). –