山本です。 >> 例外周りの挙動が変わったようで、幾つかのテストが失敗するように >> なっています。 >> >> 1) Failure: >> test_11_remote_no_method_error(TestDRbCore) [/home/akr/tmp/ >> autobuild/ruby-1.8/20050515T060903/ruby/test/drb/drbtest.rb:246]: >> <DRb::DRbRemoteError> exception expected but was >> Class: <NoMethodError> >> Message: <"undefined method `message' for #<String:0x41272df0>"> > >これはRubyのなにか(例外?)が変更されたことに >DRb等が追従すればよい、ということですか? >それとも意図しない変更なのかしら。 下のコードで再現できます。 class DRbRemoteError < RuntimeError def initialize(error) set_backtrace(error.backtrace) end end begin raise DRbRemoteError.new(NoMethodError.new) rescue p $! end begin raise DRbRemoteError.new(NoMethodError.new), "hoge" rescue p $! end /////////////////// // error.c 1.107 E:\ruby-cvs\bcc32_1_8>ruby18 \d.rb #<DRbRemoteError: DRbRemoteError> #<DRbRemoteError: hoge> ////////////////// // error.c 1.108 E:\ruby-cvs\bcc32>ruby19 \d.rb #<DRbRemoteError: DRbRemoteError> #<NoMethodError: undefined method `backtrace' for "hoge":String> これは、error.c 1.108 では raise の第二引数も initialize に渡るように なったためです。たぶん意図された挙動ではないと思います。 class DRbRemoteError < RuntimeError def initialize(error) p error end end raise DRbRemoteError.new(NoMethodError.new), "hoge" //////////////////////// // 結果 E:\ruby-cvs\bcc32>ruby19 \d.rb #<NoMethodError: NoMethodError> "hoge" /d.rb:7: DRbRemoteError (DRbRemoteError)