ruby-on-rails-4 - 异常 : "load_missing_constant Circular dependency detected while autoloading constant" in Rails

标签 ruby-on-rails-4 namespaces production-environment circular-dependency activesupport-concern

我正在使用 Rails 4.0.2。我在 Concern 目录中添加了子目录(带有模型名称):

  • /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': Circular dependency detected while autoloading constant Company::CacheConcern (RuntimeError)



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

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

    NoMethodError (undefined method `current_company' for Concerns::Company:Module):



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

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

    谢谢

    最佳答案

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

    而是这样做

    Companies::CacheConcern 并将您的文件夹重命名为 company/cache_concern.rb

    关于ruby-on-rails-4 - 异常 : "load_missing_constant Circular dependency detected while autoloading constant" in Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238587/

    相关文章:

    php - 'use' 怎么知道从哪里开始搜索文件呢?

    python - 如何更改具有命名前缀的 XML 元素的属性

    php - WordPress PSR-4 命名空间插件访问另一个命名空间插件

    jquery - 如何将 pg_search_scope 与rails-autocomplete-jquery 一起使用?

    ruby-on-rails - Rails 未定义方法 `map' for nil :NilClass - form collection_select

    ruby-on-rails-4 - Rails ActiveRecord 4.2 自定义排序顺序

    node.js - 在生产环境(kubernetes)中启用 --inspect for nodejs 是个好主意吗?

    node.js - Nodejs、PM2 和 nginx 部署安全性?

    production-environment - Symfony 4 部署不起作用

    ruby-on-rails - Nginx - passanger 显示 404 not found for rails controllers