2010-09-24 9 views
6

मैं रेल के लिए नया हूं, और एक साइड प्रोजेक्ट पर रेल 3 के साथ सीख रहा हूं। ऐसे समय होते हैं जब मैं कुछ कोड लिखना चाहता हूं जो मेरे मॉडल या मेरे नियंत्रकों में नहीं हैं - एक मॉडल और/या नियंत्रक से संबंधित चिंताओं, लेकिन मैं उनमें से किसी एक को कार्यान्वयन विवरण के साथ अव्यवस्थित नहीं करना चाहता मैं क्या लिख ​​रहा हूँ।रेल: आप गैर मॉडल कोड कहां डालते हैं?

उदाहरण के लिए: एक परियोजना जिसे मैं निर्माण कर रहा हूं, जेरेन की प्राधिकरण प्रणाली (आरपीएक्स) का उपयोग करता है, इसलिए मैं ओथ, ओपनिड, गूगल, आदि प्राधिकरण प्राप्त कर सकता हूं। एपीआई कोड का एक अच्छा हिस्सा है जो वे प्रदान करते हैं, इसलिए मुझे इसे स्वयं लिखना नहीं है। यह कोड लॉगिन नियंत्रक या उपयोगकर्ता मॉड्यूल में संबंधित नहीं है। यह प्रमाणीकरण कोड है, इसलिए इसे लॉगिन नियंत्रक द्वारा एक्सेस किया जाना आवश्यक है, लेकिन यह उस नियंत्रक का हिस्सा नहीं है।

आप यह कोड कहां रखते हैं? यह मॉडल कोड नहीं है। यह नियंत्रक में नहीं है।

... अग्रिम धन्यवाद।

उत्तर

5

आपको अपनी रूट निर्देशिका में lib फ़ोल्डर का उपयोग करने में सक्षम होना चाहिए (जब तक कि यह रेल 3 में परिवर्तित न हो)।
आप require कथन के बिना वहां से कक्षाएं देख सकते हैं।

+0

मुझे 30 सेकंड तक मारो :) +1 – Matchu

+1

रेल 3 को lib से स्वतः की आवश्यकता नहीं है, इसलिए आपको इसकी स्पष्ट आवश्यकता होनी चाहिए। –

+0

एंड्रयू - क्या मुझे libs.root जैसे किसी भी चीज का उपयोग lib फ़ोल्डर में प्राप्त करने की आवश्यकता है? या मैं बस 'lib /' का उपयोग करता हूँ? –

4

एक 'आम' सुझाव यह कहना है कि 'इस सामान को lib' में रखें। लेकिन विचार करने के लिए अन्य स्थान हैं:

  1. app में सबफ़ोल्डर बनाने पर विचार करें। कुछ उदाहरणों में शामिल हैं: app/workers, app/observers, app/sweepers, या जो भी आपके लिए समझ में आता है।

  2. प्रारंभिक कोड के लिए config/initializers का उपयोग करने पर विचार करें।

  3. आखिरकार, और केवल अगर उपरोक्त समझ में नहीं आता है, तो आप lib का उपयोग कर सकते हैं। भूलें कि आप सबफ़ोल्डर का उपयोग बहुत जंक अप करने से रोकने के लिए कर सकते हैं।

और, जब आप काम करने और पॉलिश करने के बाद, अपने कोड को मणि में निकालने पर विचार करें। उदाहरण के लिए, Creating a New Gem with Bundler पर रेलस्कास्ट देखें।

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