web-dev-qa-db-fra.com

L'injection de dépendance existe-t-elle dans Rails?

Le fait que Rails ait une approche MVC signifie-t-il une injection de dépendance?

Ou y a-t-il une raison pour laquelle nous ne parlons pas d'injection de dépendance dans Rails?

Si Rails a une injection de dépendance, en quoi consiste-t-elle?

56
kws

L'injection de dépendance n'est généralement pas nécessaire avec Ruby. Jamis Buck blogué intensivement sur les raisons pour lesquelles. Vaut bien la peine d'être lu.

4
John Topley

IoC est le gros marteau, mais DI se produit tous les jours en Ruby/Rails. Chaque fois que vous le faites:

def initialize(model_klass)
  @model_klass = model_klass
end

C'est DI. Ce paradigme est également utilisé à divers endroits dans le code source Rails. Par exemple, la gemme Railties elle-même est principalement un moteur DI. Vous pouvez injecter votre ORM favori, diverses configurations de plugins et générateurs.

L'injection de dépendances a un nom gros et effrayant, mais cela se résume simplement à découpler les dépendances de classe par des moyens d'injecter les dépendances pendant l'exécution.

Peu importe la langue que vous utilisez, tant que vous devez brancher un comportement/code quelque part, vous l'utilisez probablement.

13
Aaron Qian

L'injection de dépendance est un paradigme, elle existe donc dans tous les langages orientés objet.

S'il existe des cadres DI pour Ruby - vérifiez cette question

9
Bozho

Je dirais que vous n'avez pas besoin d'une telle chose avec Ruby ... mais si vous le voulez vraiment, certaines personnes ont solutions .

0
marcgg

J'utilise cet IoC https://github.com/alexeypetrushin/micon dans mon framework Web, la plupart du temps il reste caché et résout silencieusement les problèmes de dépendances et d'initialisation des composants qui autrement devraient être résolus manuellement.

Vous pouvez le voir en action ici http://Ruby-lang.info (ce site propulsé par Rad, mon framework web https://github.com/alexeypetrushin/rad_core =).

0
Alexey Petrushin