From: Mauricio Fernandez Date: 2006-07-21T06:38:08+09:00 Subject: Re: Problem when 'loading' a file containing a class derived from a struct On Fri, Jul 21, 2006 at 06:27:29AM +0900, Chris Roos wrote: > I actually spotted this in a rails app but traced it back to ruby. Is > this a real problem/bug or am I missing something obvious? > > $ cat > person.rb > class Person < Struct.new(:forename, :surname) > end > $ irb > irb> load 'person.rb' > => true > irb> load 'person.rb' > TypeError: superclass mismatch for class Person > from ./person.rb:1 > from (irb):2 > > This behaviour has been experienced with both ruby 1.8.2 and 1.8.4. Each time Struct.new(*args) is evaluated, it creates a new class: Struct.new(:a,:b) # => # Struct.new(:a,:b) # => # Struct.new(:foo) == Struct.new(:foo) # => false class X < Struct.new(:a); end class Y < Struct.new(:a); end X.superclass == Y.superclass # => false -- Mauricio Fernandez - http://eigenclass.org - singular Ruby