У меня есть Mix-in, который отражает класс получателя для генерации некоторого кода. Это означает, что мне нужно выполнить метод класса в конце определения класса, как в этом тривиально упрощенном примере:
module PrintMethods
module ClassMethods
def print_methods
puts instance_methods
end
end
def self.included(receiver)
receiver.extend ClassMethods
end
end
class Tester
include PrintMethods
def method_that_needs_to_print
end
print_methods
end
Я бы хотел, чтобы миксин делал это для меня автоматически, но я не могу придумать способ. Моей первой мыслью было добавить receiver.print_methods
к self.included
в миксине, но это не сработает, потому что метод, о котором я хочу рассказать, еще не был объявлен. Я мог бы позвонить include PrintMethods
в конце урока, но это похоже на плохую форму.
Есть ли уловки, чтобы это произошло, поэтому мне не нужно вызывать print_methods
в конце определения класса?