由于错误的命名空间无处不在,Rails未初始化为常量

时间:2017-03-15 12:35:58

标签: ruby-on-rails ruby namespaces ruby-on-rails-5

我随机遇到错误,我的框架由于名称空间错误而抱怨缺少类。

由于某些原因,Rails将尝试从不同的gem中查找名为namespace的类名:

假设我的根命名空间中有::ProfilesController,我有时会遇到错误

  

未初始化的常量Mongoid :: Token :: Collisions :: ProfilesController

其中Mongoid::Token::Collisions(示例)是模型中使用的模块from a different gem。我有几个配置文件控制器声明如下

class ::ProfilesController < Devise::RegistrationsController
class Registrations::ProfilesController < Devise::RegistrationsController
class Foo::ProfilesController < FooController
class Bar::ProfilesController < BarController
class Baz::Foo::ProfilesController < BazController

我不明白如何使用ProfileController命名空间来解析Mongoid::Token::Collisions,因为我从未在我的代码ProfilesController中写入,因为没有任何命名空间或{{1}前缀

我实际上有不同组件的类似错误。通常,重新启动服务器时问题会消失。我想知道什么可能导致这种行为,这种行为变得更加频繁。我不确定提供代码会有什么帮助,堆栈跟踪甚至不会从我的应用程序代码开始。知道这可能来自何处?

::

0 个答案:

没有答案