From: Masatoshi Itagaki Date: 2006-12-25T21:54:45+09:00 Subject: [ruby-list:43075] YAMLライブラリのバグ? ANN以外で初めて投稿します。 Railsでデータベースを切り替える際に、YAMLへ退避する方法を試していて、日 本語のTextがうまくエンコードされないのでYAMLライブラリのソースを見ていま したが、バイナリとしてエンコードするか否かの判定で、「統計的手法?」を採っ ていると思われる部分で、おかしな点を発見しました。 浮動小数点を基準値として比較を行っているのですが、比較値の計算を整数のま ま行っているため、決して真にはならない箇所がありました。 下記のように.to_fをつけるべきだと思いますが、いかがでしょうか? --- c:\ruby-1.8.5-p2\lib\yaml\rubytypes.rb Tue Jan 10 12:50:27 2006 +++ c:\ruby\lib\ruby\1.8\yaml\rubytypes.rb Fri Dec 22 22:39:22 2006 @@ -143,7 +143,7 @@ to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/ end def is_binary_data? - ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty? + ( self.count( "^ -~", "^\r\n" ).to_f / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty? end def String.yaml_new( klass, tag, val ) val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary" ------------- いたさん http://rails.to/