2016-10-03 57 views
1

我的应用程序在app/controllers/api/V2/concerns问题仅在生产找到控制器的担忧

一些控制器关注我在发展这方面的工作,一切正常。然而,当我推到生产,我得到以下错误,当铁轨服务器启动时: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自动加载了应用程序/文件夹中的所有内容,只有/ lib等区域必须明确添加。

作为一个仅供参考,我的控制器坐在app/controllers/api/V2/my_controller.rb

任何想法可能在这里发生了什么?

+0

你可以尝试重新启动生产服务器..? –

+0

我试过重新启动服务器,甚至一起部署到另一个提供程序(Heroku)并得到完全相同的错误 – Karim

+0

这是否称为'my_concern.rb'?你确定它全是小写吗?有时候你的本地开发系统不区分大小写,生产不是。 – tadman

回答

2

很有可能您的路径中的V2组件导致此问题。在不区分大小写的文件系统中,这将作为v2解决。在区分大小写的文件系统上,它将查找不存在的app/controllers/api/v2/concerns/my_concern.rb,并且不会加载。

+0

是的,就是这样。似乎这是V2中文件系统无法识别大小写的案例问题。谢谢! – Karim