无法加载lib目录模块 - 未初始化的常量 - rails 2到rails 3升级

Ora*_*nge 6 ruby routes ruby-on-rails upgrade ruby-on-rails-3.1

我目前正在将rails v2中的应用程序迁移到v3

在我的lib/子目录中的一些模块中,例如,我就是lib/search/host_search.rb

用一个

  module HostSearch
    def do_search(args)
       #...
    end
  end
Run Code Online (Sandbox Code Playgroud)

然后我需要在名为的控制器中使用它 Discovery::HostController < ApplicationController :

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

但是我得到了:

uninitialized constant Discovery::HostController::HostSearch
Run Code Online (Sandbox Code Playgroud)

..我试着将这些行放在application.rb中,但它不起作用..

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

rka*_*un1 5

我发现将模块移动到lib文件夹或显式包含要加载的文件夹,在你的情况下config.autoload_paths + =%W(#{config.root}/lib/search)

我认为我们缺少一些语法上的东西.另一件事是,如果你不想搞乱application.rb文件,请求文件,如果我记得的话,从lib文件夹获取文件路径,例如:search/host_search < - 检查一下.