当类存在于子目录中并且是子类时,Rspec与load_missing_constant失败

Dav*_*e G 11 rspec ruby-on-rails ruby-on-rails-3

由于我怀疑与自动加载相关的东西,我在运行一堆RSpec测试时遇到了一些麻烦.这是错误:

/usr/share/ruby-rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.4/lib/active_support/dependencies.rb:490:in `load_missing_constant': Expected /var/lib/jenkins/.../portfolios/base_manage_controller.rb to define Portfolios::BaseManageController (LoadError)
from /usr/share/ruby-rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.4/lib/active_support/dependencies.rb:181:in `block in const_missing'
from /usr/share/ruby-rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.4/lib/active_support/dependencies.rb:179:in `each'
from /usr/share/ruby-rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.4/lib/active_support/dependencies.rb:179:in `const_missing'
from /usr/share/ruby-rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing'
from /var/lib/jenkins/jobs/.../app/controllers/portfolios/customize_controller.rb:1:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

这是文件的标题:

class Portfolios::BaseManageController < ApplicationController
Run Code Online (Sandbox Code Playgroud)

它存在于 app/controllers/portfolios/base_manage_controller.rb

它的子类:

class Portfolios::CustomizeController < Portfolios::BaseManageController
Run Code Online (Sandbox Code Playgroud)

它存在于 app/controllers/portfolios/customize_controller.rb

最后这里有一堆自动加载:

config.autoload_paths += Dir["#{config.root}/lib",  "#{config.root}/lib/**/"]
config.autoload_paths += %W(#{config.root}/app/models/statistics)

#Any test/dev specific load paths
if not Rails.env.production?
  config.autoload_paths += %W(#{config.root}/spec/support)
  config.autoload_paths += %W(#{config.root}/spec/support/builders)
  config.autoload_paths += %W(#{config.root}/spec/support/modules)
  config.autoload_paths += %W(#{config.root}/spec/support/utils)
end
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激!

use*_*207 0

看起来加载Portfolios时没有定义。你在哪里定义的?如果它在单独文件中的某个位置定义为模块或类,则首先需要该文件。rspecPortfolios::BaseManageControllerPortfoliosrequire