`Rails 4.2.0引擎应用程序控制器中的循环依赖关系继承



当引擎从Rails 3.2升级到Rails 4.2.0时,应用程序控制器中的以下继承导致rspec中的circular dependency错误:

class ApplicationController < ApplicationController
end

我们有用于config/development.rb的config.eager_load = false

错误:

activesupport-4.2.0/lib/active_support/dependencies.rb:492:in `load_missing_constant': Circular dependency detected while autoloading con
stant Authentify::ApplicationController (RuntimeError)

以下是Rails引擎文档(ch:4.3.2),解释了这种类型的代码实践。据我所知,这种继承的目的是允许引擎访问Rails应用程序或当前引擎所安装的其他引擎中的方法。我们希望在Rails 4.2.0引擎中也这样做。如何解决此问题?

您的applicationController显然试图从自身继承,它应该看起来像

class ApplicationController < ActionController::Base

在rails 4引擎中,正确的格式是:

class ApplicationController < ::ApplicationController
end

假设该类在CCD_ 4内。或

class MyEngineName::ApplicationController < ::ApplicationController
end

最新更新