2010-02-03 11 views
48

क्या तथ्य यह है कि रेल के पास एमवीसी दृष्टिकोण है जिसका अर्थ निर्भरता इंजेक्शन है?रेल में निर्भरता इंजेक्शन मौजूद है?

या क्या कोई कारण है कि हम रेल में निर्भरता इंजेक्शन के बारे में बात नहीं करते हैं?

यदि रेल के पास निर्भरता इंजेक्शन है, तो इसमें क्या शामिल है?

+0

यह एक बहुत अच्छा सवाल है। मैंने जवाब पढ़ने से बहुत कुछ सीखा – Phil

उत्तर

9

निर्भरता इंजेक्शन आमतौर पर रूबी के साथ अनावश्यक है। क्यों कारणों के बारे में जामिस बक blogged extensively। एक पढ़ने के लायक है।

+39

जामिस वास्तव में कह रहा था कि जावा के साथ अक्सर उपयोग में भारी हाथी डी ढांचे की आवश्यकता नहीं है। उन्होंने यह नहीं कहा कि रूबी में यह अनावश्यक है - इसके विपरीत, डीयू को युग्मन को कम करने और टेस्टेबिलिटी में सुधार करने के लिए रूबी में उपयोग किया जा सकता है। यह सिर्फ आवश्यक नहीं है। – scottburton11

+8

ब्लॉग के लेखक कहते हैं कि वे _do_ हर दिन DI का उपयोग करते हैं, सिर्फ डी ढांचे नहीं। –

+0

यह एक शानदार लेख था। रूबी का उपयोग कर हर किसी के लिए पढ़ना चाहिए। – Flavia

8

निर्भरता इंजेक्शन एक प्रतिमान है, इसलिए यह प्रत्येक ऑब्जेक्ट उन्मुख भाषा में मौजूद है।

रूबी के लिए डि चौखटे देखते हैं क्या - जाँच this question

0

मैं कहना चाहता हूँ कि आप माणिक के साथ ऐसी बात की जरूरत नहीं है ... लेकिन अगर आप वास्तव में चाहते हैं, तो कुछ लोगों को workarounds है।

0

मैं अपने वेब फ्रेमवर्क में इस आईओसी https://github.com/alexeypetrushin/micon का उपयोग करता हूं, अधिकतर समय यह छुपा रहता है और चुपचाप निर्भरता के मुद्दों को हल करता है और घटक प्रारंभिक रूप से अन्यथा मैन्युअल रूप से हल किया जाना चाहिए।

आप इसे यहां देख सकते हैं http://ruby-lang.info (यह साइट रैड के साथ संचालित है, मेरा वेब ढांचा https://github.com/alexeypetrushin/rad_core)।

10

आईओसी बड़ा हथौड़ा है, लेकिन डी रोज रूबी/रेल में होता है। जब भी आप करते हैं:

def initialize(model_klass) 
    @model_klass = model_klass 
end 

यह DI है। यह प्रतिमान रेल स्रोत कोड में विभिन्न स्थानों पर भी प्रयोग किया जाता है। उदाहरण के लिए, Railties मणि स्वयं ज्यादातर एक डी इंजन है। आप इंजेक्ट कर सकते हैं अपने अनुकूल ओआरएम, विभिन्न प्लगइन कॉन्फ़िगरेशन, और जेनरेटर।

निर्भरता इंजेक्शन में एक बड़ा और डरावना नाम है, लेकिन यह जो भी उबलता है वह रनटाइम के दौरान निर्भरताओं को इंजेक्शन देने के तरीकों से केवल वर्ग निर्भरताओं को कम करता है।

इससे कोई फ़र्क नहीं पड़ता कि आप किस भाषा का उपयोग करते हैं, जब तक आपको कहीं भी व्यवहार/कोड प्लग करने की आवश्यकता होती है, तो आप शायद इसका उपयोग कर रहे हैं।

संबंधित मुद्दे