Изучая миксины против внедрения зависимостей, я часто слышу фразу «путь Ruby». Часто разработчики говорят что-то вроде
Ruby позволяет повторно открывать классы, а переопределение методов означает, что вы можете легко "вставлять" новые ссылки в ваш код во время тестирования.
(см. № 6 на http://weblog.jamisbuck.org/2007/7/29/net-ssh-revisited )
Но тестирование - не моя главная забота; Меня беспокоит повторное использование классов. Мне нужны классы, которые я могу повторно использовать в нескольких приложениях Rails масштаба предприятия.
Так что же случилось с ПОВТОРНЫМ ИСПОЛЬЗОВАНИЕМ классов? Использование миксинов и повторное открытие классов, похоже, не дает возможности писать классы таким образом, чтобы они были отделены от деталей, специфичных для приложения, без кучи дополнительной работы. Но, возможно, я ошибаюсь. Если да, может ли кто-нибудь предоставить ссылку на статью, содержащую образец кода, который четко объясняет, как сделать это правильно с помощью миксинов и повторного открытия классов?
В качестве примера, класс Foo здесь связан с классом Logger:
class Foo
def initialize
@logger = new_logger
end
def new_logger
Logger.new
end
end
] Да, я могу снова открыть Foo и переопределить new_logger, но я просто не могу поверить, что это считается реалистичным стандартным подходом к написанию повторно используемых классов, используемых несколькими приложениями Rails.