2009年11月12日木曜日

rubyによるincludeを用いたクラス拡張のイディオム

rubyでよく使うincludeを用いたクラス拡張のイディオムについてのメモというかサンプル。


サンプルはTextMateのbundleを参考にしました。



module IncExt
module ClassMethods
def foo
puts "foo"
end
end

module InstanceMethods
def bar
puts "bar"
end
end

def self.included(receiver)
receiver.extend ClassMethods
receiver.send :include, InstanceMethods
end
end

class Buz
include IncExt
end

Buz.foo # => "foo"
Buz.new.bar # => "bar"