From: "T. Onoma" Date: 2003-12-07T01:07:29+09:00 Subject: Re: mixins and extend (was: Attempted roadmap of future instance variables....) Take a look at this: class MC def happy; print "C"; super if defined?(super); end end module M def happy; print "M"; super if defined?(super); end end class S < MC include M def happy; print "x"; super if defined?(super); end end s = S.new print "superclass: "; s.happy print "\t", class << s; self; end.ancestors.inspect; puts Outputs: superclass: xM [S, M, MC, Object, Kernel] Now look at this: class MC def happy; print "C"; super if defined?(super); end end module M def happy; print "M"; super; end end class S < MC include M def happy; print "x"; super if defined?(super); end end s = S.new print "superclass: "; s.happy print "\t", class << s; self; end.ancestors.inspect; puts Outputs: superclass: xMC [S, M, MC, Object, Kernel] The last is what one would expect. Seems that defined?(super) dosen't work with mixins even though calling super does. What do you make of that? Bug? T.