問題は次のとおりです。UTF-8の文字列があり、US-ASCIIの文字列がある可能性があります。エンコーディングに関係なく、例に示すようString
に、これらの役に立たないオブジェクトではなく、YAML.dump(str)で実際にオブジェクトをダンプしたいと思います。!binary
YAML.dump()に正しいことを強制するためのフラグや何かが表示されていませんか?
Ruby1.9.1の例
YAML::VERSION # "0.60"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- foo\n"
Ruby1.9.3の例
YAML::VERSION # "1.2.2"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- !binary |-\n Zm9v\n"
更新:私自身の答えを得た
YAML::ENGINE.yamler='syck'
YAML.dump(a) # => "--- foo\n"
したがって、古いyamlerエンジンを使用して、古い動作を強制するように見えます。