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

标签 ruby-on-rails ruby ruby-on-rails-3.1 routes upgrade

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

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

有一个

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

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

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/**/"]

最佳答案

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

我认为我们缺少一些语法。另一件事是,如果您不想弄乱 application.rb 文件,则需要该文件,如果我记得的话,该文件采用 lib 文件夹中的文件路径,例如:search/host_search <- 检查一下。

关于ruby-on-rails - 无法加载 lib 目录模块 - 未初始化的常量 - rails 2 到 rails 3 升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184857/

相关文章:

ruby - 如何使用 Poltergeist/Capybara/Rspec 记录 javascript 错误?

ruby-on-rails - 具有自定义功能的 Ruby on Rails 应用程序的 Heroku 部署

ruby-on-rails - 在多个端口上运行 Rails 应用程序

ruby-on-rails - Rails 表单(选择/选项)-如何使用 HAML 标记所选选项?

ruby-on-rails - Rails 4 Controller 在脚手架后似乎不正确

ruby-on-rails - 如何测试外部 API 调用,而无需将代码更改推送到 Ruby on Rails 应用程序?

ruby-on-rails - 您已经激活了 rake 0.8.7,但是您的 Gemfile 需要 rake 0.9.2。考虑使用 bundle exec。

ruby-on-rails - 重新显示表单后 CarrierWave 不保存上传

ruby - 范围/线段树 Ruby

ruby-on-rails - WickedPDF 本地渲染与生产渲染不同