2011-11-18 48 views
6

我目前在遷移軌道V2應用程序V3着負載lib目錄模塊 - 未初始化不斷 - 軌道2至3軌升級

在我lib/我一些模塊子目錄中,例如, 我「已經在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 + =%W(#{} config.root/lib目錄/搜索)

我認爲有索姆我們錯過了句法。另一件事是,如果你不想弄亂application.rb文件,需要這個文件,如果我記得的話,從lib文件夾獲取文件路徑,例如:search/host_search < - 檢查。

0

我想,如果你把HostSearch模塊下一個搜索子目錄,(即lib/search/host_search.rb),那麼你需要的命名空間:

module Search 
    module HostSearch 
    end 
end 

如果你不想的命名空間,你應該可以將文件移動到lib根目錄:lib/host_search.rb

另請參閱:https://stackoverflow.com/a/19650564/514483