55 votes

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

Est-ce que le fait que Rails ait une approche MVC signifie qu’il a 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-il?

14voto

Aaron Qian Points 2284

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

def initialize(model_klass)
  @model_klass = model_klass
end

C'est DI. Ce paradigme est également utilisé dans différents endroits dans les Rails du code source. Par exemple, l' Railties gem lui-même est la plupart du temps une DI Moteur. Vous pouvez injecter votre favoriate ORM, divers plugin configs, et des générateurs.

L'Injection de dépendance a un grand et effrayant nom, mais ce qu'il se résume à juste découplage de la classe des dépendances par des moyens d'injection de la dépendance au cours de l'exécution.

Il n'a pas d'importance ce que la langue que vous utilisez, aussi longue que vous avez besoin de brancher comportement / code quelque part, vous êtes probablement à l'utiliser.

10voto

Bozho Points 273663

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

Existe-t-il des cadres DI pour Ruby? Cochez cette question.

3voto

John Topley Points 58789

L'injection de dépendance est généralement inutile avec Ruby. Jamis Buck a beaucoup écrit sur les blogs pour en expliquer les raisons. Vaut bien une lecture.

0voto

marcgg Points 25599

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

0voto

Alexey Petrushin Points 1153

J'utilise cette Cio https://github.com/alexeypetrushin/micon dans mon Framework Web, la plupart du temps il reste caché et silencieux résout les problèmes de dépendances et de composants initializtion qui, autrement, devrait être résolu manuellement.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X