Rails:Rails 3.2中的嵌套命名空间控制器无法加载(在3.0中很好)

时间:2012-04-05 00:49:59

标签: ruby-on-rails rspec

我有一个名为Reports :: Accountant :: ApprovedTimeOffRequestsController的控制器。它位于正确的目录中,并且类名在文件中是正确的。 Rails控制台和独角兽加载就好了,但是测试期间rspec似乎无法加载文件。

这是错误。

/Users/mdarby/.rvm/gems/ruby-1.9.3-p125-perf/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:503:in load_missing_constant': Expected /Users/mdarby/Documents/Code/ccw_32/app/controllers/reports/accountant/approved_time_off_requests_controller.rb to define Reports::Accountant::ApprovedTimeOffRequestsController (LoadError) from /Users/mdarby/.rvm/gems/ruby-1.9.3-p125-perf/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:192:in block in const_missing'

这个文件是在Rails 3.0堆栈上找到的,但是现在我已经升级到3.2 / rspec 2.9,这就是轰炸。

班级的定义: class Reports::Accountant::ApprovedTimeOffRequestsController < ApplicationController

修改

如果有人遇到这个,我通过删除规格来解决它:)

2 个答案:

答案 0 :(得分:0)

你是否对你的测试做了什么想法?我在应用程序本身有一个案例,其中多个线程试图加载相同的模块。我只能猜测它在实际运行之前将其标记为已加载,然后该常量不可用于下一个。无论如何,我的解决方案是在线程之外添加一个准备块。

development.rb(你可能需要在test.rb中使用它)

ActionDispatch::Reloader.to_prepare do
  Reports::Accountant::ApprovedTimeOffRequestsController
end

答案 1 :(得分:0)

我打赌你在使用Spork。我遇到了这个问题。我删除了Spork,我正在路上。给它一个打击,让我知道它是否修复了它。如果是这样的话,可能值得在spork上提出问题。