Moduleのincludeとextendまわりの自分用サンプル 基本 module Foo def self.included(base) base.extend ClassMethods base.__send__ :include, InstanceMethods end module ClassMethods # クラスメソッドの定義 end module InstanceMethods # インスタンスメソッドの定義 end end (Bar = Class.new).__send__ :include, Foo p Bar.ancestors #=> [Bar, Foo::InstanceMethods, Foo, Object, Kernel] p (class << Bar; self end).ancestors #=> [Foo::ClassMethods, Class