仅在生产中发现控制器问题

时间:2016-10-03 20:37:38

标签: ruby-on-rails ruby autoload

我的应用程序在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等区域。

作为一个FYI,我的控制器位于app/controllers/api/V2/my_controller.rb

任何想法可能会发生在这里?

1 个答案:

答案 0 :(得分:2)

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