On Mon, 29 Nov 2004 22:49:57 +0900, Francis Hwang <sera / fhwang.net> wrote: > Is there a way to capture whenever a class method is added either to a > base class or its children? For example, if my code is This seems to work, but it provides interesting results: class A class << self def singleton_method_added(sym) puts "+++A.#{sym}" end def inherited(klass) class << klass define_method(:singleton_method_added) do |sym| puts "++#{self}.#{sym}" super end end end end end class B < A def foo puts "Bfoo" end end def A.foo; puts "Afoo"; end class C < B; end def C.foo; puts "Cfoo"; end C:\home>inherit.rb +++A.singleton_method_added +++A.inherited ++B.singleton_method_added +++A.B +++A.foo ++C.singleton_method_added ++C.C +++A.B ++C.foo ++C.C +++A.B C:\home>ruby -v ruby 1.8.2 (2004-07-29) [i386-mswin32] -austin -- Austin Ziegler * halostatue / gmail.com * Alternate: austin / halostatue.ca