«Путь Ruby» (миксины и повторное открытие классов) против внедрения зависимостей

Изучая миксины против внедрения зависимостей, я часто слышу фразу «путь 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.

18
задан Chad Johnson 15 August 2011 в 13:14
поделиться