http://fabiokung.com/2010/05/06/ruby-and-dependency-injection-in-a-dynamic-world/: jest to kolejny, znacznie mniej uparty niż artykuł artykule James Buck. Najważniejsze jest to, że nie potrzebujesz zastrzyku zależności, ponieważ ruby zapewnia mnóstwo dobrych alternatyw, które działają równie dobrze i które tak naprawdę nie istnieją w świecie Java.
Jedną z tych alternatyw jest mixins, która jest czymś, czego Java nie ma, a druga to możliwość nadpisania/przedefiniowania niemal wszystkiego w tym języku. Inne funkcje obejmują dynamiczne pisanie, gdzie zasadniczo można wysłać dowolną wiadomość do dowolnego obiektu, a jeśli zdarzy się, że zapewnia implementację dla tej wiadomości, rzeczy po prostu działają. Wszystkie te elementy współdziałają, aby usunąć większość potrzeb związanych z architekturą DI. Wzorzec projektowy jako taki jest nadal ważny również w Ruby i czasami po prostu ma sens, aby go użyć.
Inną kwestią dotyczącą DI, którą Alexey Petrushin powyżej również czyni, jest to, że zastrzyk zależności jest przede wszystkim wzorcem projektowym i że oprzyrządowanie jest drugorzędne, a przede wszystkim pozbywanie się żmudności pewnych rzeczy w Javie. W Ruby możesz trywialnie naśladować większość tego, co wiosną lub guice zrobi dla ciebie w Javie.Tak więc pełna struktura wtrysku zależności jest w zasadzie zbędna w Ruby.
To powiedziawszy, czasami posiadanie schematu DI jest miłe, ponieważ ostatecznie może zabrać trochę żmudnego okablowania. Nie mogę ręczyć za żadne konkretne struktury Ruby z Ruby, ale znam wiele projektów Ruby, które ostatecznie zostały przepisane w innym języku (nawet Java), ponieważ rzeczy w stylu playdoh sprawiają, że trudno jest je utrzymać/rozszerzyć. Podejrzewam, że ma to wiele wspólnego z programistami strzelającymi sobie w stopy z różnymi potężnymi funkcjami językowymi. Posiadanie schematu DI narzuca trochę struktury i idiomów, które mogą temu zapobiec.
Muszę zobaczyć tę rozmowę osobiście w RubyConf w miniony weekend, wykonał on tak fantastyczną robotę. Dolna linia - nie potrzebujesz wtrysku zależności w Ruby. – mwilliams
Ten artykuł nie mówi, że nie powinieneś używać iniekcji zależności, to znaczy, że nie potrzebujesz struktury DI. Oto kolejny cytat z artykułu: "Czy w Ruby nie ma miejsca na DI?" Zdecydowanie używam DI prawie codziennie w Ruby, ale nie używam frameworka DI, a sama Ruby ma wystarczającą moc do reprezentowania każdego dnia -do-dniowych idiomów DI, których potrzebujesz. " –
Chcemy tylko wskazać, * DI Frameworks * są niepotrzebne w Ruby, ale paradygmat * DI * nie powinien być ignorowany. –