Я сейчас работаю с книгой Грегори Брауна Ruby Best Practices . Вначале он говорил о рефакторинге некоторой функциональности от вспомогательных методов в связанном классе к некоторым методам в модуле, затем имел модуль extend self
.
Не видел, чтобы раньше, после быстрого поиска в Google, обнаружил, что extend self
в модуле позволяет методам, определенным в модуле, видеть друг друга, что имеет смысл.
Теперь мой вопрос: когда бы вы сделали что-то подобное
module StyleParser
extend self
def process(text)
...
end
def style_tag?(text)
...
end
end
и затем обратитесь к нему в тестах с
@parser = Prawn::Document::Text::StyleParser
в отличие от чего-то подобного?
class StyleParser
def self.process(text)
...
end
def self.style_tag?(text)
...
end
end
это так, что вы можете использовать его как миксин? или есть другие причины, которых я не вижу?