2011-11-18 6 views
6

3 yükseltme birolamaz yük lib dizini modülleri - başlatılmamış sabit - raylar raylarına 2 Şu anda , örneğin, i benim <code>lib/</code> yılında</p> <p>v3 raylar v2 içinde bir uygulama i alt dizinleri bazı modülleri ettik göç ediyorum

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

ile lib/search/host_search.rb

sonra adında bir denetleyici kullanmak gerekir ziyaretinde Discovery::HostController < ApplicationController :

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

Ama sahip alıyorum:

uninitialized constant Discovery::HostController::HostSearch 

..Ben application.rb bu satırları koymak için çalıştı ama çalışmıyor ..

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

cevap

5

Ben modül hareketli bulundu lib klasörüne ya da işlenecek klasöre açık bir şekilde dahil olmak üzere, çalışmanızda config.autoload_paths + =% W (# {config.root}/lib/arama)

özlediğimiz sözdizimsel. Başka bir şey, eğer application.rb dosyasıyla uğraşmak istemiyorsanız, dosyaya ihtiyacınız olduğunu hatırlıyorum, eğer hatırlıyorumsa, lib klasöründen dosya yolunu alır, örneğin: search/host_search < - bunu kontrol edin. should yapabilirsiniz,

module Search 
    module HostSearch 
    end 
end 

bunu ad alanı istemiyorsanız:

0

Ben bir arama subdir altında HostSearch modülü koyarsanız, (yani lib/search/host_search.rb olarak), o zaman bunu ad alanı gerektiğini düşünüyorum dosyayı lib root'a taşıyın: lib/host_search.rb.

Ayrıca bkz .: https://stackoverflow.com/a/19650564/514483

İlgili konular