Je veux que le module suivant à inclure dans une classe I ont:Ruby métaprogrammation, définissant plusieurs « hérité » fonctions
module InheritanceEnumerator
def self.included(klass)
klass.instance_eval do
instance_variable_set('@subclasses',[])
def self.subclasses
@subclasses
end
original_method = self.respond_to?(:inherited) ? self.public_method(:inherited) : nil
instance_variable_set('@original_inherited_method', original_method)
def self.inherited(subclass)
@original_inherited_method.call(subclass) if @original_inherited_method
@subclasses<<subclass
end
end
end
end
Ce que je suis en train de réaliser est que je veux que ma classe parente d'avoir des références diriger les enfants. J'ai également besoin de toutes les autres méthodes "héritées" définies sur ma classe par d'autres choses pour rester en place. Qu'est-ce que je fais mal?
Quelle erreur obtenez-vous exactement? – horseyguy
La méthode d'origine n'est pas appelée. –