A different approach than the `initialized' method, which would 
naturally be run after the class's `initialize' method had been called, 
would be an 'instantiated' method, which would be called *before* 
`initialize'. I actually think that's better, because that makes it 
possible for `initialize' to take advantage of the things changed by the 
module initialization code.

   module Fooable
     def self.instantiated(obj, *args, &block)
       obj.instance_eval do
         @foo = "something"
       end
     end
   end

   class Klass
     include Fooable

     def initialize
       puts @foo  # -> something
     end
   end


This will be a lot harder to implement though, as the module method 
`instantiated' must be called on all modules included by a class 
*before* its `initialize' method is called. That isn't possible by 
simply overriding Class#new...


Cheers,
Daniel

Cheers,
Daniel