2011-02-12 23 views
5

मेरे पास user_searches नामक एक मॉड्यूल है। यह कुछ खोज करता है जो उपयोगकर्ता मॉडल के लिए मूल नहीं हैं, इस प्रकार, मैं कहीं और ज़िम्मेदारी क्यों डाल रहा हूं। मैं इस तरह के अपने सभी मॉडलों को व्यवस्थित करना चाहता हूं जो उपयोगकर्ता नामक एक lib subfolder में गैर-कोर उपयोगकर्ता फ़ंक्शन निष्पादित करते हैं। अभी उपयोगकर्ता मॉडल मैं डाल करने के लिए है में मॉड्यूल के तरीकों ...lib में सबफ़ोल्डर

require 'user/user_searches' 

class User < ActiveRecord::Base 

    include UserSearches 

end 

... मैं की आवश्यकता होती है, तो फ़ाइल lib फ़ोल्डर में सीधे है की जरूरत नहीं है, लेकिन अगर यह में है करना शामिल करने के लिए उपफोल्डर मुझे क्या करना है इसलिए मुझे की आवश्यकता नहीं है?

उत्तर

3

आप आवश्यक आवश्यकताओं को lib/user.rb में डाल सकते हैं, सभी आवश्यकताओं को एप्लिकेशन लॉन्च पर रिकर्सिव रूप से लोड किया जाता है।

वैकल्पिक रूप से, आप एक प्रारंभकर्ता में कुछ इस तरह डाल सकता है:

# put into config/initializers/load_lib.rb 
Dir["#{RAILS_ROOT}/lib/**/*.rb"].each { |f| require(f) } 

यह अपने lib फ़ोल्डर में सभी माणिक फ़ाइलों की आवश्यकता होगी। तुम सिर्फ अगर यह तुम सच में क्या चाहते हैं :)

0

यह काम करता है कि बस पथ लोड करने के लिए प्रारंभ विधि default_load_paths में फ़ाइल रेल-2.2.2 में

कारण/lib/initializer.rb है सुनिश्चित करने के लिए है उपनिर्देशिका के बिना lib फ़ोल्डर, इसे हल करने के लिए आप अपनी प्रोजेक्ट `environment.rb कॉन्फ़िगरेशन फ़ाइल को संपादित कर सकते हैं और config.load_path सरणी में सभी subdirs में धक्का दे सकते हैं।

+1

रेलवे 2.x के लिए, पर्यावरण.आरबी में प्रलेखन के अनुसार, निम्न जोड़ें: 'config.autoload_paths + =% W (# {RAILS_ROOT}/lib/extra)' – ghayes