Модули в Ruby используются для двух основных целей:
Namespaces (Пространства имён): Организация кода для предотвращения конфликтов имён. Позволяют группировать связанные классы, методы и константы под одним именем. Это помогает избежать ситуации, когда два разных класса или метода имеют одинаковое имя.
ruby
Mixins (Подмешивания): Механизм для совместного использования функциональности (методов) несколькими классами без использования классического наследования. Модули включаются в классы с помощью include или prepend.
include: Методы модуля становятся доступны в экземплярах класса и могут быть переопределены в самом классе. Поиск методов происходит в следующей последовательности: текущий класс, включенный модуль, суперклассы.prepend: Вставляет модуль в цепочку наследования перед классом. Методы модуля имеют приоритет над методами класса.Пример использования include:
ruby
Пример использования prepend:
ruby
Модули не могут быть инстанциированы (нельзя создать объект модуля) и не имеют цепочки наследования в том же смысле, что и классы.