2010-03-22 6 views

Répondre

1

Avez-vous essayé de remplacer "define_method"? Au moins, vous pourriez attraper certaines des définitions de la méthode "runtime"? Rappel

3

Il ya le méthode_added rappel (voir http://www.ruby-doc.org/core/classes/Module.html#M001662 malheureusement, il n'y a pas de documentation). Vous pouvez l'utiliser comme suit:

class Foo 

    # define the callback...  
    def self.method_added(method_name) 
    puts "I now have a method called #{method_name}" 
    end 

    # the callback is called on normal method definitions 
    def foo 
    # "I now have a method called foo" will be printed 
    end 

    # the callback is called on method definitions using define_method 
    define_method :bar do 
    # "I now have a method called bar" will be printed 
    end 

    # the callback is called on method definitions using alias and the likes 
    alias :baz :foo # "I now have a method called baz" will be printed 
end 
1

Remplacer method_added. Gardez à l'esprit, cependant, que si vous modifiez dynamiquement des méthodes dans method_added, celles-ci provoqueront également l'appel de method_added, vous devez donc avoir un moyen de savoir quelles sont les méthodes qui vous intéressent afin d'éviter une récursion infinie.

Questions connexes