RuntimeError:自动加载常量时检测到循环依赖性

时间:2014-07-10 09:44:58

标签: ruby ruby-on-rails-4 web rspec-rails


我通过引入请求和响应模型来重构我的控制器,以执行在presentation之后围绕控制器的一些逻辑。我将所有响应和请求模型分别包含模块响应和请求。应用程序运行完美,但是当我运行测试时,我得到以下错误。

Failure/Error: Unable to find matching line from backtrace
RuntimeError:
Circular dependency detected while autoloading constant Responses::FolderContentResponse

我的目录结构如下:
- app /
- 型号/
- 回复/

注意:我已经看到了与此问题相关的问题,但是,他们的问题似乎与我的问题不相似。在我的情况下,它是随机发生的,只有在运行测试(RAILS TEST ENV)时,应用程序才能正常运行。

module Responses
  class ContentResponse
   include ActiveAttr::Model
   #some attributes
   #some methods
  end
end

module Responses
 class FolderContentResponse < ContentResponse
 end
end

FolderContent响应类继承自ContentResponse,后者具有FolderContent其他内容响应使用的更通用的方法。

1 个答案:

答案 0 :(得分:13)

这听起来很像是Xavier Noria最近发现的issue。简而言之,即使预先加载所有应用程序代码的设置未激活(需要因为require而且朋友不是线程安全的),capybara会以多线程模式启动您的应用程序以进行测试

早期版本的rails 4.2已经修复了

config.allow_concurrency = false
test.rb中的

应该做的伎俩