Report abuse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
FILE = "classes.marshal"
if File.exist? FILE
begin
p File.open(FILE, "rb") { |file| Marshal.load(file) }
rescue ArgumentError => error
if cls = error.message[%r{\bclass/module\s*(\w+)\b}, 1]
Object.const_set(cls, Class.new)
retry
end
end
else
class A
attr_accessor :b
end
class B
attr_accessor :c
end
class C
end
a = A.new
a.b = B.new
a.b.c = C.new
File.open(FILE, "wb") { |file| Marshal.dump(a, file) }
end
|