[ruby-list:41800] Hashを継承したクラスでYAML.dump

From: sakazuki <qzs01353@...>
Date: 2006-01-26 04:55:19 UTC
List: ruby-list #41800
こんにちは。sakazukiです。

YAMLライブラリのバグレポートです
Hashを継承したクラスで定義した属性がYAML.dump/loadで復元出来ません。

require 'yaml'

class B < Hash
  def initialize(*v)
    @order = []
    super
  end
  attr_accessor :order
end

b = B.new
p b.order  # => []
s = YAML.dump(b)
b2 = YAML.load(s)
p b2.order # => nil 1.8.4では orderが復元出来ない, 1.8.3では可

class A
  def initialize
    @test = []
  end
  attr_accessor :test
end

class C < A
  def initialize
    @order = []
    super
  end
  attr_accessor :order
end

c = C.new
p c.order, c.test   # => [], []
s = YAML.dump(c)
c2 = YAML.load(s)
p c2.order, c2.test # => [], [] Hashでなければ大丈夫

-- sakazuki

In This Thread

Prev Next