2016-10-03 55 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