Ruby的YAML.dump不与循环对象和自定义初始化器合作

时间:2014-11-18 13:18:25

标签: ruby serialization yaml

想象一下,我有这个类,我想用YAML序列化它的对象:

class Thing
  attr_reader :var, :some_proc

  def initialize
    @var = self
    @some_proc = put_some_important_proc_here
  end
end

显然,@some_proc不应序列化,因此我将此方法添加到仅序列化@var

def encode_with(coder)
  coder['var'] = @var
end

但是现在当我尝试序列化这个对象时,我得到一个堆栈溢出,因为它只是试图一次又一次地序列化自己,而没有为循环对象做那个YAML引用魔术。如何防止@some_proc字段被序列化?

0 个答案:

没有答案