2010-05-21 12 views
5

मेरे पास यह कोड स्निपेट है जो POSTs के लिए हस्ताक्षर उत्पन्न करता है। इसका विवरण महत्वपूर्ण नहीं है, लेकिन मैं जो जानना चाहता हूं वह है: चूंकि यह कोड से संबंधित मॉडल से संबंधित नहीं है, इसलिए इसे वास्तव में कहीं भी उपयोग किया जा सकता है: नियंत्रकों में, मॉडलों में, मददगारों में; विचारों में भी। तो मुझे यकीन है कि एक समस्या से भी बड़ा और कहां बड़ा है, इसे किसी स्थान पर रखने के बाद इसका उपयोग कैसे सक्रिय किया जाए।रेल में कोड स्निपेट कहां रखा जाए?

क्या यह उन "आवश्यकता" बयान के बारे में है? आप वर्तमान फ़ाइल में "आवश्यकता" कथन के माध्यम से कुछ कार्यक्षमता प्राप्त कर सकते हैं जिस पर आप काम कर रहे हैं?

बस ऐसे ही तो हम के बारे में कहते हैं, बात करने के लिए एक उदाहरण है, मुझे लगता है कि cubing है कोड का एक छोटा टुकड़ा है:

def cube_it(num) 
    num**3 
end 

मुझे पता है कि मैं इसे आवेदन में विभिन्न स्थानों पर उपयोग किया जाएगा, तो मुझे इसे कहां रखना चाहिए? और जब मुझे इसका उपयोग करने की ज़रूरत है, तो मैं इसे "कैसे बुला सकता हूं"?

आप

उत्तर

2

रेल autoloads मॉड्यूल और वर्गों धन्यवाद जब वे पहली बार उपयोग किया जाता है। आप अपने फ़ंक्शन को मॉड्यूल (या कक्षा) में डाल सकते हैं और फ़ाइल को अपने एप्लिकेशन में lib निर्देशिका में डाल सकते हैं। रेलवे ऐप्स में require कथन का उपयोग अक्सर नहीं किया जाता है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद एलेक्स --- कहो मैंने फ़ाइल कॉल maths.rb बनाया है, इसलिए मैंने इसे "lib" निर्देशिका में रखा है? और उसके बाद मैं कहीं से भी cube_it कॉल कर सकते हैं? –

+0

@Nik: हाँ, बस इसे lib निर्देशिका में डालें। यदि आप मॉड्यूल में cube_it डालते हैं, तो मॉड्यूल स्वतः लोड हो जाएगा। हालांकि मैंने सादे कार्यों के साथ कोशिश नहीं की है। –

+0

ठीक है, मैंने एक फ़ाइल lib/maths.rb बनाया है। और उस में, यह बस है: वर्ग मैथ्स डीईएफ़ cube_it (एन) n ** 3 अंत अंत लेकिन जब मैं स्क्रिप्ट/कंसोल को लोड और cube_it की कोशिश की (3), यह कोई तरीका त्रुटि कहते हैं। मैंने कोशिश की मॉड्यूल गणित डीईएफ़ cube_it (एन) n ** 3 अंत अंत और कोई भाग्य। ---- कंसोल में सिर्फ एक सेकंड, मैंने "गणित शामिल" किया, फिर यह काम किया! लेकिन आपने इसका इस्तेमाल ऑटोलोडेड किया है? –

4

मैं में Math नामक मॉड्यूल के अंदर अपना कोड डालने का सुझाव दूंगा।

math.rb
module Math 
    class << self 
    def cube_it(num) 
     num*3 
    end 
    end 
end 

आप किसी भी इस के साथ बयान (रेल आप के लिए यह करता है) की आवश्यकता होती है और आप आसानी से Math.cube_it("Hi") साथ यह कॉल कर सकते हैं की जरूरत नहीं है।

रेल आवेदन में कोड जोड़ने के अन्य तरीके हैं, लेकिन यह सबसे अच्छा तरीका है।

+0

मैं देखता हूं। धन्यवाद सैमुअल –

+0

यह मेरे लिए काम नहीं कर रहा प्रतीत होता है। जब मैं अपने मॉड्यूल का उपयोग करता हूं तो मुझे 'अनियंत्रित निरंतर मॉड्यूलनाम' मिलता है और सटीक math.rb फ़ाइल और आपके पास जो सामग्री है, मैं 'Math.cube_it (3)' प्रतिक्रिया के लिए मिलता हूं: मैथ के लिए अपरिभाषित विधि 'cube_it': मॉड्यूल ' – Mikey

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