Lepsze klonowanie obiektów

Witam!
czy jest jakaś lepsza metoda na utworzenie kopii jakiegoś obiektu niż object.clone ?
dla przykładu:

[code=ruby]class A
attr_accessor :x
end

class B
attr_accessor :o
def initialize(a)
@o = a
end

end

a = A.new
a.x = 666

b = B.new(a)

c = b.clone
a.x = 34

puts b.o.x
puts c.o.x[/code]
wynik:

34 34
Ja chciałbym, żeby w “c.o” była kopia “a”
wyni byłby wtedy:

34 666
jest jakiś sposób na to?

w tym przypadku “c” staje sie nowym skopiowanym objektem z odwolaniem do “a”, tak wiec jak zmieniasz “a” to zmienia sie zarowno “o” w objekcie b i c … w tym przypadku lepiej ci napisać własną metode w ktorej “sklonujesz” sobie tez objekt klasy A… zamotane to strasznie na przyszłość jakoś to ponazywaj normalnie ^^

W rails jest metoda deep clone.

ale problem z tego co widzę jest to że zmieniasz obiekt do którego przechowujesz referencję, a nie OBIEKT
jest to związane z tym że w ruby wszystko jest referencją oprócz symboli, true, false, nil i liczb naturalnych w pewnym przedziale

a = 1
a = 2

to nie zmiana obiektu a, tylko przypisanie odpowiedni 1 i 2 do referencji a