From: James Edward Gray II Date: 2006-12-03T12:27:37+09:00 Subject: Re: Factory pattern, abstract base class On Dec 2, 2006, at 7:27 PM, Joel VanderWerf wrote: > module Foo > class Bar > def self.new(arg) > return super() if self != Foo::Bar I don't believe that line does what you intend. Try using your code with something like: fb = Foo::Baz.new('baz') # => # > case arg.downcase > when 'baz' > return Baz.new(arg) > when 'zap' > return Zap.new(arg) > end > end > end > > class Baz < Bar > end > > class Zap < Bar > end > end > > fb = Foo::Bar.new('baz') > p fb # ==> # James Edward Gray II