From: Trans Date: 2007-12-10T14:24:51+09:00 Subject: Module#include (no need for ClassMethods) If we define Module#include as: class Module alias _include include def include(*mods) mods.each do |mod| if mod.const_defined?(:Self) extend mod::Self # pass it along if module if instance_of?(Module) const_set(:Self, Module.new) unless const_defined?(:Self) const_get(:Self).send(:include, mod::Self) end end end _include(*mods) end end Example: module X def x; "x"; end module Self def q; "q"; end end end class C include X end C.q #=> "q" Benefits: * Documents well in RDoc * Fairly concise and clear * Self module fits in well with "class << self" * No callbacks used. T.