znzの日記

 | 

2006-10-17

例外のmessageが戻らない

YAML.dumpされた中にはちゃんとメッセージが入ってるのに復元されないと思ったら、@mesgというインスタンス変数に入ってしまっていた。

require 'yaml'
yaml = YAML.dump(StandardError.new('hoge'))
p yaml #=> "--- !ruby/exception:StandardError \nmessage: hoge\n"
e = YAML.load(yaml)
p e.message #=> "StandardError"
y e
#=>
#  --- !ruby/exception:StandardError
#  message: StandardError
#  mesg: hoge
p e.instance_eval { @message } #=> nil
p e.instance_eval { @mesg } #=> "hoge"
 |