Ruby 像其他对象一样将Mail::Message序列化到yaml
问题 普通对象序列化为以下内容:Ruby 像其他对象一样将Mail::Message序列化到yaml,ruby,serialization,yaml,actionmailer,Ruby,Serialization,Yaml,Actionmailer,问题 普通对象序列化为以下内容: "--- !ruby/object {}\n\n" 而Mail::Message序列化为: "--- \nMime-Version: \"1.0\"\nbody: \"\"\nContent-Transfer-Encoding:[…]" 问题 如何像其他对象一样序列化Mail::Message 背景 创业板版本: YAML:“0.60” 邮件:“2.2.19” 代码 Object.new.to_yaml #gives "--- !ruby/object
"--- !ruby/object {}\n\n"
而Mail::Message序列化为:
"--- \nMime-Version: \"1.0\"\nbody: \"\"\nContent-Transfer-Encoding:[…]"
问题
如何像其他对象一样序列化Mail::Message
背景
创业板版本:
- YAML:“0.60”
- 邮件:“2.2.19”
Object.new.to_yaml #gives
"--- !ruby/object {}\n\n"
Mail::Message.new.to_yaml #gives
"--- \nMime-Version: \"1.0\"\nbody: \"\"\nContent-Transfer-Encoding: 7bit\nMessage-ID: <4dc418052be4a_16b62850c31ac91488@mbp.local.mail>\nsubject: \nContent-Type: text/plain\nDate: Fri, 06 May 2011 15:47:17 +0000\n"
因为Mail::Message有自己的
to_yaml
方法——我认为没有像这样的猴子补丁是不可能的
module Mail
class Message
def to_yaml
self.class.name.to_yaml
end
end
end
irb(main):011:0> Mail::Message.new.to_yaml
=> "--- Mail::Message\n...\n"
原因是邮件宝石的补丁有缺陷。详情如下:
直接使用
YAML
,而不是通过to_YAML
方法
YAML.dump(Mail::Message.new)
YAML.dump(Mail::Message.new)