Eğer YAML kaçan bir dize saklamak istiyorsanız YAML dönüştürmek önce #inspect
kullanarak kaçmak : o kadar sahip olmadıkça
irb> require 'yaml'
=> true
irb> str = %{This string's a little complicated, but it "does the job" (man, I hate scare quotes)}
=> "This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
irb> puts str
This string's a little complicated, but it "does the job" (man, I hate scare quotes)
=> nil
irb> puts str.inspect
"This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
=> nil
irb> puts str.to_yaml
--- This string's a little complicated, but it "does the job" (man, I hate scare quotes)
=> nil
irb> puts str.inspect.to_yaml
--- "\"This string's a little complicated, but it \\\"does the job\\\" (man, I hate scare quotes)\""
=> nil
YAML dizeleri alıntı etmez. Bir YAML tüketici olarak,
irb> puts (str + " ").to_yaml
--- "This string's a little complicated, but it \"does the job\" (man, I hate scare quotes) "
=> nil
irb> puts %{"#{str}"}.to_yaml
--- "\"This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)\""
=> nil
irb> puts (" " + str).to_yaml
--- " This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
=> nil
Ancak dize önemli olmamalı alıntı olup olmadığını,: tırnak karakterleri çevreleyen veya sonunda veya önündeki boşlukların gibi - onlar buna tırnaksız saklanan eğer kaçıracağı konusunda şeyleri içerir eğer dizeleri tırnak sana. Asla YAML metnini kendiniz ayrıştırmamalısınız - bunu kütüphanelere bırakın. YAML dosyasında alıntılanacak dizeye ihtiyacınız varsa, bu bana kötü kokuyor.
Bu sizin dizeleri var onlarda '&' ın fark etmez, YAML dize koruyacak:
YAML 1.2 Specification gereğince
irb> test = "I'm a b&d string"
=> "I'm a b&d string"
irb> YAML::load(YAML::dump(test))
=> "I'm a b&d string"
irb> YAML::load(YAML::dump(test)) == test
=> true
, ben gibi karakterler & ve tutabilir tek yolu bu: (http://www.yaml.org/YAML_for_ruby.html#single-quoted_strings). Bu yaml dosyasındaki URL'leri, daha sonra bozulmadan tekrar Ruby'ye geri çekmek istediğim bir yerde saklıyorum. – neezer