Существует ли внедрение зависимостей в Rails? - PullRequest
51 голосов
/ 03 февраля 2010

Означает ли тот факт, что в Rails используется подход MVC, это внедрение зависимостей?

Или есть причина, по которой мы не говорим о внедрении зависимостей в Rails?

Если в Rails есть внедрение зависимостей, из чего оно состоит?

Ответы [ 5 ]

13 голосов
/ 19 февраля 2013

IoC - большой молот, но DI происходит каждый день в Ruby / Rails. Всякий раз, когда вы делаете:

def initialize(model_klass)
  @model_klass = model_klass
end

Это DI. Эта парадигма также используется в различных местах исходного кода Rails. Например, сам камень Railties в основном представляет собой DI Engine. Вы можете ввести ваш любимый ORM, различные конфигурации плагинов и генераторы.

У Dependency Injection есть большое и страшное имя, но все сводится к тому, чтобы просто отделить зависимости класса путем внедрения этих зависимостей во время выполнения.

Неважно, какой язык вы используете, если вам нужно куда-то вставить код поведения / код, вы, вероятно, используете его.

9 голосов
/ 03 февраля 2010

Внедрение зависимостей - это парадигма, поэтому она существует в каждом объектно-ориентированном языке.

Существуют ли рамки DI для Ruby - отметьте этот вопрос

4 голосов
/ 03 февраля 2010

Внедрение зависимостей обычно не требуется в Ruby. Джамис Бак широко писал в блогах о причинах этого. Стоит прочитать.

0 голосов
/ 17 июня 2011

Я использую этот IoC https://github.com/alexeypetrushin/micon в моей веб-платформе, большую часть времени он скрыт и молча решает проблемы зависимостей и инициализации компонентов, которые в противном случае должны решаться вручную.

Вы можете увидеть егов действии здесь http://ruby -lang.info (этот сайт работает на Rad, мой веб-фреймворк https://github.com/alexeypetrushin/rad_core).

0 голосов
/ 03 февраля 2010

Я бы сказал, что вам не нужна такая вещь с рубином ... но если вы действительно хотите, у некоторых людей есть обходные пути .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...