Mauricio Fern?ndez wrote:
> Use Module#method_added.

I have tried to do this, but unfortunately I have a bad experience. This
testprogram works:

--------------------------------
#!/usr/bin/env ruby
class Module
  def append_features(klass)
    puts "append_features: #{klass}"
    if klass.method_defined?(:initialize2) # The method is already
defined 
      puts "method exists"
    else # The method is not yet defined 
      puts "method does not exist"
    end
  end
end

module M
end

class A
  def initialize2
  end
  include M
end
--------------------------------

Output:

append_features: A
method exists

But, if I change everywhere (i.e., two places) "initialize2" to
"initialize", then it will output

append_features: A
method does not exist

The problem is, that if I want before() to work both before and after
the method definition, then I have to decide whether it is defined
already in append_features(). And it looks that ruby handles the
'initialize' method specially in this case. :-(

Can I consider it as a bug?

Ferenc