【发布时间】:2013-08-17 17:33:03
【问题描述】:
我最近能够通过将所有内容分组到文件夹来组织我的代码。
我在app/ 目录下的控制器组和lib/ 目录下的模块使用相同的“组名”时遇到了问题,但我可以通过以下方式解决:
Rails: Same name for a library module and a group of controllers?
我也知道,每当您更改 lib 代码时,您都需要重新启动 rails 服务器,这对我来说完全没问题。
但是最近重新整理之后,每次修改controllers中的代码,都会报如下错误!!!
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
【问题讨论】:
-
那么您是否对 lib 类使用自动加载?还是没有自动加载的明确要求?
-
明确,我将编辑问题以添加更多信息。
-
您不必在开发模式下使用 Rails 默认设置重新启动服务器。要在 lib 目录下自动加载您的 ruby 文件,请将以下内容添加到您的
config/application.rb配置文件中:config.autoload_paths += %W(#{config.root}/lib) -
问题不在于更改lib代码后重新启动,而是在任何地方更改任何代码。
标签: ruby-on-rails