Theo tài liệu YAML, bạn có thể chuyển một số hash of options đến phương thức .to_yaml
.Cách nhận các tùy chọn định dạng cho phương thức to_yaml hoạt động trên ruby 1.9.1?
Hiện tại khi tôi chuyển các tùy chọn như được đề xuất bởi tài liệu không hoạt động, hàm băm sẽ bị bỏ qua.
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"
Bây giờ, đi qua một số tùy chọn:
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"
Như bạn có thể thấy, thông qua các tùy chọn không làm việc. Chỉ các giá trị mặc định:
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}
Đây có phải là lỗi đã biết không? hoặc Nó hiện đang làm việc cho bất cứ ai sử dụng Ruby 1.9.1?
Tôi nhận được hành vi tương tự như bạn đang thấy. Có vẻ như điều này đã được yêu cầu trước đó mà không có độ phân giải: http://stackoverflow.com/questions/1054730/is-it-possible-to-specify-formatting-options-for-toyaml-in-ruby –
Có, trong đó trường hợp họ đang sử dụng 1.8.7, tôi đã chỉ tự hỏi nếu nó hoạt động cho 1.9.1, nó có vẻ là một vấn đề mà không có một câu trả lời ngắn gọn. – jpemberthy
Tôi rất muốn biết câu trả lời cho câu hỏi này. Tôi từ lâu đã từ bỏ và viết chức năng "sắp xếp yaml" của riêng tôi (cho 1.8.7). –