修改控制器代码后出现“NameError,uninitialized constant”错误

时间:2013-08-17 17:33:03

标签: ruby-on-rails

我最近能够通过将所有内容分组到文件夹中来组织我的代码。
我遇到了app/目录下我的控制器组和lib/目录下的模块具有相同“组名”的问题,但我能够通过以下方式解决:

Rails: Same name for a library module and a group of controllers?

我也知道无论何时更改lib代码,都需要重新启动rails服务器,这对我来说完全没问题。

但是在最近的重新组织之后,每次我更改控制器中的代码时,都会出现以下错误!

NameError at /admin
uninitialized constant Admin::PagerDuty

要解决它,我只需重启服务器!!

有什么建议吗?!

编辑:结构:

控制器main_controller.rb位于app/controllers/admin

class Admin::MainController < ApplicationController
end

帮助者main_helper.rb位于app/helpers/admin

之下
module Admin::MainHelper
      require "admin/pager_duty.rb"

      def pager_duty
        pagerduty = Admin::PagerDuty.new()
        @on_call = pagerduty.on_call()
        @counts = pagerduty.open_incidents()
      end
end

lib pager_duty.rb位于lib/admin

module Admin 
  class PagerDuty
   ....
  end
end

1 个答案:

答案 0 :(得分:9)

尝试更改

require "admin/pager_duty.rb"

require_dependency "admin/pager_duty.rb"

在您的模块中。