【发布时间】:2016-10-03 20:37:37
【问题描述】:
我的应用程序在app/controllers/api/V2/concerns 中有许多控制器问题
当我在开发中处理此问题时,一切正常。但是,当我推送到生产环境时,rails 服务器启动时出现以下错误:Uninitialized constant Concerns::MyConcern (NameError)
我的担忧是这样的:
module Api::V2
module Concerns
module MyConcern
extend ActiveSupport::Concern
def some_method(some_arg)
# some stuff here
end
end
end
end
我在我的生产和开发环境中都设置了config.eager_load = true,以尝试使它们尽可能一致;但是,在生产中仍然没有看到此错误。
奇怪的是,如果我注释掉控制器中包含问题的区域,应用程序会设法启动;然后,当我转到生产服务器上的 rails 控制台并查看是否可以访问 Api::V2::Concerns::MyConcern 时,我可以无错误地访问它。这让我认为存在某种自动加载问题,在控制器中调用关注点时未加载它们;但是,我的印象是 Rails 会自动加载 app/ 文件夹中的所有内容,并且只需要显式添加 /lib 等区域。
作为一个仅供参考,我的控制器位于app/controllers/api/V2/my_controller.rb
有什么想法可以在这里发生吗?
【问题讨论】:
-
重启生产服务器后可以试试吗..?
-
我试过重启服务器,甚至一起部署到另一个提供商(Heroku)并得到完全相同的错误
-
这叫
my_concern.rb吗?你确定都是小写的?有时您的本地开发系统不区分大小写,而生产则不。 -
粘贴完整路径到文件,请
-
@tadman 是的,我的所有 6 个问题都会出现此错误。如果我在控制器中注释掉一个,第二个也会出现同样的错误。如果我在注释掉所有“包含”之后
rails c进入应用程序,然后能够访问这些问题,这一事实让我认为这是一些奇怪的加载问题
标签: ruby-on-rails ruby autoload