This is a working implementation:
class Class
alias_method :__new__, :new
def new(*args, &block)
obj = __new__(*args, &block)
included_modules.each do |mod|
if mod.respond_to? :initialized
mod.initialized(obj, *args, &block)
end
end
return obj
end
end
# Testing
module A
def self.initialized(obj, *args)
puts "Module A"
end
end
module B
def self.initialized(obj, *args)
puts "Module B"
end
end
module C; end
class Klass
include A, B, C
def initialize
puts "Klass"
end
end
Klass.new
Cheers,
Daniel