2011-11-18 10 views
6

मैं वर्तमान मेंनहीं कर सकते लोड lib निर्देशिका मॉड्यूल - अप्रारंभीकृत निरंतर - रेल पटरियों के लिए 2 से 3 उन्नयन

v3 में मेरी lib/ में रेल वी 2 में एक आवेदन मैं उप-निर्देशिकाओं के कुछ मॉड्यूल है, मैं पलायन कर रहा हूँ उदाहरण के लिए, 've lib/search/host_search.rb

एक

module HostSearch 
    def do_search(args) 
     #... 
    end 
    end 

साथ

तो मैं नाम के एक नियंत्रक में इसका इस्तेमाल करने की जरूरत है Discovery::HostController < ApplicationController :

def search_results 
    output = HostSearch.do_search(:search_string => @search_string, 
    :page => params[:page], 
    :user => @current_user) 
    #... 
end 

लेकिन मैं मिलता है:

uninitialized constant Discovery::HostController::HostSearch 

..मैं application.rb में यह लाइनें डालने की कोशिश की, लेकिन यह काम नहीं करता है ..

config.autoload_paths += %W(#{config.root}/lib) 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 

उत्तर

5

मैंने पाया कि मॉड्यूल चलती lib फ़ोल्डर में या स्पष्ट रूप से काम करने के लिए फ़ोल्डर सहित, आपके मामले में config.autoload_paths + =% डब्ल्यू (# {config.root}/lib/search)

मुझे लगता है कि कुछ है कुछ वाक्यविन्यास है कि हम गायब हैं। एक और बात यह है कि यदि आप application.rb फ़ाइल से गड़बड़ नहीं करना चाहते हैं, तो फ़ाइल की आवश्यकता होती है, जो मुझे याद है, तो lib फ़ोल्डर से फ़ाइल पथ लेता है जैसे: search/host_search < - इसे जांचें।

0

मैं अगर आप एक खोज subdir तहत HostSearch मॉड्यूल शब्दों में कहें, (यानी lib/search/host_search.rb में), तो आप यह नाम स्थान की जरूरत है लगता है:

module Search 
    module HostSearch 
    end 
end 

आप इसे नाम स्थान नहीं करना चाहते हैं, तो आप कर सकते हैं करना चाहिए फ़ाइल को lib root में ले जाएं: lib/host_search.rb

यह भी देखें: https://stackoverflow.com/a/19650564/514483

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