From: Nobuyoshi Nakada Date: 2010-05-24T12:27:29+09:00 Subject: [ruby-dev:41399] [trunk:bug] Psych raises an exception with diffrent name class なかだです。 以下のように、Fooが指定されているのにメッセージではStruct::Fooが ないということになっています。 $ ./ruby -v -rpsych -ryaml -e 'p((YAML.load("--- !ruby/object:Foo\nfoo: 1") rescue $!.message))' ruby 1.9.3dev (2010-05-24 trunk 27985) [i386-darwin9.0] "undefined class/module Struct::Foo" 元の名前を示すべきではないでしょうか。 diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb index e28ac7b..ffff636 100644 --- a/ext/psych/lib/psych/visitors/to_ruby.rb +++ b/ext/psych/lib/psych/visitors/to_ruby.rb @@ -246,13 +246,13 @@ module Psych begin path2class(name) - rescue ArgumentError => ex - name = "Struct::#{name}" + rescue ArgumentError, NameError => ex unless retried - retried = true + name = "Struct::#{name}" + retried = ex retry end - raise ex + raise retried end end end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦