From: Paul Brannan Date: 2003-07-22T23:03:23+09:00 Subject: Re: Keyword "with" On Fri, Jul 18, 2003 at 05:43:07PM +0900, Robert Klemme wrote: > class Object > alias old_initialize :initialize > > def initialize(*args, &block) > old_initialize > init(*args, &block) > end > end > > now you can do > > class Foo > def init(name) > @name = name > end > end This will break the order of initialization: class Object alias old_initialize :initialize # test.rb:5: warning: redefining Object#initialize may cause infinite loop def initialize(*args, &block) old_initialize init(*args, &block) end def init end end class Base def initialize puts "Base" super end end class Derived1 < Base def initialize puts "Derived1" super end end class Derived2 < Base def init puts "Derived2" super end end Derived1.new #=> Derived1 #=> Base Derived2.new #=> Base #=> Derived2 I think any change like this needs to be done at the interpreter level. Paul