From: Chan Sammy Date: 2007-12-18T02:42:23+09:00 Subject: Difference between alias and alias_method In the example below, I really can't sort out why using alias_method will work, while using alias won't. Could someone shred me some light on this? Thanks. class T def initialize() puts "T's initialize" end def self.redefine alias old_initialize initialize #alias_method :old_initialize, :initialize self.module_eval do define_method :initialize do old_initialize(1) end end end end class S < T def initialize(int) puts "S's initialize:#{int}" end redefine() end S.new ========================== Using alias: in `old_initialize': wrong number of arguments (1 for 0) (ArgumentError) (T's initialize was called) Using alias_method: S's initialize:1 (S's initialize was called, as expected)