我最近能够通过将所有内容分组到文件夹中来组织我的代码。
我遇到了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
答案 0 :(得分:9)
尝试更改
require "admin/pager_duty.rb"
到
require_dependency "admin/pager_duty.rb"
在您的模块中。