Ruby on rails 4 例外情况:;加载“丢失”自动加载常量时检测到常量循环依赖性;在轨

Ruby on rails 4 例外情况:;加载“丢失”自动加载常量时检测到常量循环依赖性;在轨,ruby-on-rails-4,namespaces,production-environment,circular-dependency,activesupport-concern,Ruby On Rails 4,Namespaces,Production Environment,Circular Dependency,Activesupport Concern,我使用的是Rails 4.0.2。我在关注目录中添加了子目录(带有型号名称): /app/models/concerns/company/cache_concern.rb /app/models/concerns/user/cache_concern.rb /app/models/concerns/document/cache_concern.rb 公司目录中的cache_concern.rb包含以下内容: module Company::CacheConcern included do

我使用的是Rails 4.0.2。我在关注目录中添加了子目录(带有型号名称):

  • /app/models/concerns/company/cache_concern.rb
  • /app/models/concerns/user/cache_concern.rb
  • /app/models/concerns/document/cache_concern.rb
公司目录中的cache_concern.rb包含以下内容:

module Company::CacheConcern
  included do
    ...
  end
end
在我的模特课上,我有:

class Company
    include Company::CacheConcern
...    
end
在我投入生产之前,一切都很好。然后我得到了以下例外:

`load_missing_constant”:自动加载常数Company::CacheConcern时检测到循环依赖关系(RuntimeError)

为了解决我的问题,我将关注点文件中的名称空间从Company::CacheConcern更改为Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序

但现在我在使用Company类的行中的关注文件中遇到了开发环境问题:

NoMethodError(未定义的方法“当前公司”用于关注点::公司:模块):

看来他正在关注目录中搜索。在生产中一切都很好。为了解决这个问题,我可以在类名称前添加两个冒号来使用models目录中的类

我知道生产模式与开发模式的行为不一样,因为它会将整个应用程序缓存在内存中。我检查了所有类似的帖子。我是否需要在模型目录中的类名前面加上两个冒号?如果有人能向我解释这种奇怪的情况,我将不胜感激


谢谢你这么做了我认为这是错误的:

为了解决我的问题,我将关注点文件中的名称空间从Company::CacheConcern更改为Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序

而是这样做

companys::CacheConcern并将文件夹重命名为companys/cache_concern.rb