On 21 Jan., 22:27, Matt Jones <al2o...@gmail.com> wrote: > On Jan 21, 2011, at 3:41 PM, Nick Sutterer wrote: > > > By accident I solved this with a 10-liner months ago, why not use > > something like > > that?https://github.com/apotonick/hooks/blob/master/lib/hooks/inheritable_... > > > It's simple, clean and does exactly what you expect. > > Well, as long as "what you expect" doesn't involve keeping anything more > complicated than a flat Hash/Array/etc in the class variable: > Ouuuuuuuuuuuuuuuuuuuuuch - that's absolutely right. So worst case is that in my solution you might still operate on a superclass object. Let me think about that!
> irb --> a = { :key_1 => 1, :key_2 => ['x','y'] } > ==> {:key_1=>1, :key_2=>["x", "y"]} > > irb --> b = a.clone > ==> {:key_1=>1, :key_2=>["x", "y"]} > > irb --> b[:key_2] << 'z' > ==> ["x", "y", "z"] > > irb --> a > ==> {:key_1=>1, :key_2=>["x", "y", "z"]} > > Object#clone solves the problems caused when you add a key to hash b in this > example, but it doesn't completely separate the objects. This code does: > > totally_cloned = Marshal.load(Marshal.dump(source)) > > but that's fairly inefficient and fails disastrously if an object that can't > be marshalled is involved (Procs, for instance). > > I can't really decide whether doing the clone causes results that are more or > less surprising than the existing version. > > --Matt Jones -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-core+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.