From: Tanaka Akira Date: 2010-01-14T18:22:59+09:00 Subject: [ruby-dev:40084] Re: [BUG] marshaling Time.utc_offset 2010年1月14日15:12 Yukihiro Matsumoto : > 問題と言えば、1.8とのやりとりで整数の方がよいと言うのはあるか。 Rational は 1.8 - 1.9 間で marshal できませんからねぇ。 % ./ruby -e 'Marshal.dump(Rational(1,2), STDOUT)'|ruby-1.8 -rrational -e 'p Marshal.load(STDIN)' -e:1:in `load': instance of Rational needs to have method `marshal_load' (TypeError) from -e:1 % ruby-1.8 -rrational -e 'Marshal.dump(Rational(1,2), STDOUT)'|./ruby -e 'p Marshal.load(STDIN)' -e:1:in `load': dump format error (ArgumentError) from -e:1:in `
' % ./ruby -v ruby 1.9.2dev (2010-01-14 trunk 26319) [i686-linux] % ruby-1.8 -v ruby 1.8.8dev (2010-01-13 revision 26317) [i686-linux] マイクロ秒未満の時刻は分子と分母を記録するようにしたので marshal したデータ内には Rational は現れず、 1.8 では無視されるだけにしてあります。 utc_offset でも素朴にやると問題がおきますが、同様の対処は可能です。 本当は Rational 自体が 1.8 - 1.9 間で marshal 可能だといいんですが。 -- [田中 哲][たなか あきら][Tanaka Akira]