Trans wrote: > To answer my own question: > > module PromoteSelf > def singleton_method_added( *args ) > p args > end > end > > module String::Format > class << self > include PromoteSelf > > def jumble( obj, x, y ) > p obj+x+y > end > end > end > > But I'll be honest with you. I find it odd. Why would'nt the later > work? It almost seems like it would have to be purposfully disallowed. Module#method_added is called when a new method is added to the module's collection of methods. When you define a method as SomeModule.method_name, you're not adding a method to the module's collection, you're adding a singleton method to the SomeModule object. You could do the same for any object, which is why Object contains singleton_method_added.