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

问题描述 投票:0回答:2

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

class ApplicationController < ApplicationController
end

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

错误:

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 engine document(ch:4.3.2)解释了这种类型的代码实践。据我了解,这种继承的目的是允许引擎访问Rails应用程序或当前引擎安装到的其他引擎中的方法。我们想在Rails 4.2.0引擎中做同样的事情。如何解决此问题?

ruby-on-rails ruby-on-rails-4 rails-engines
2个回答
2
投票

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

class ApplicationController < ActionController::Base


0
投票

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

class ApplicationController < ::ApplicationController
end

假设班级在module MyEngine之内。或

class MyEngineName::ApplicationController < ::ApplicationController
end
© www.soinside.com 2019 - 2024. All rights reserved.