Moduleによるクラスの拡張
Module CoolModule # このModuleをインクルードしたクラスを引数にブロック内を実行 def self.included(class) # 第1引数のメソッドを第2引数以降を引数に実行 class.send :alias_method_chain, :hoge_method, :cool end # インクルードしたクラス内で定義(≠実行) def hoge_method_with_cool # ... end end
クラスがモジュールをインクルードすると、モジュールに定義されたメソッドをクラスでも使えるようになる(クラス内に定義される)。一方、インクルードされたときにメソッドを実行したい場合(alias_method_chain、define_method、class_eval等)、Module#includedを使う。