[ruby]
なぜ、append_featuresで受け取るパラメータがモジュールでないのか悩む?
下が実験。
01:23:40 shelby:~/src/ruby/misc$ cat append_features.rb
class Module
  alias :old_include :include
  def include(arg)
    p self.name
    p arg.name
    old_include(arg)
  end
  def append_features(arg)
    p self.name
    p arg.name
  end
end
if $0 == __FILE__
  module Foo; end
  class Test
    include Foo
  end
end
01:24:14 shelby:~/src/ruby/misc$ ruby append_features.rb
"Test"
"Foo"
"Foo"
"Test"
 
結果を見て、クラスとモジュールページを見て、ソースを見て、どうやらincludeメソッドの中でreceiverとparameterを入れ替えていることがわかる。
なぜ、そんな事をしているかわからなかったが、結局モジュールの方で何らかの付加処理をしたい場合にそうなっていないと書けないことに気づく。