2011-03-29 106 views
1

我正在将Rails 2.x应用程序转换为Rails 3.x。 Rails 2.x项目的规格目前全部通过执行。RSpec 1.x到RSpec 2.x(Rails 2.x到Rails 3.x)

但是,在将规格移至Rails 3.x应用程序后,规格无法找到在Rails.root + '/lib'目录中定义的基类(SmsCommand::Base)。我试图运行规格只有rspec path_to_spec,rake specbundle exec rspec path_to_spec都无济于事。

我担心它可能与目录嵌套有关。作为一个例子:

/spec/models/sms_commands/accept_spec.rb 

为规范:被包含在

/app/models/sms_commands/accept.rb 

Accept类从SmsCommand::Base继承:

/lib/sms_command.rb 

它好像滑轨自动装载机ISN”不会发生规格或它根本不自动加载/ lib目录。

rake spec的输出是:

/Users/xxx/.rvm/gems/[email protected]_project/gems/rspec-core 2.5.1/lib/rspec/core/backward_compatibility.rb:20: 
in `const_missing': uninitialized constant Object::SmsCommand (NameError) 
from /Users/xxx/Projects/a_project/app/models/sms_commands/accept.rb:2:in `<top (required)>' 

spec_helper这是由每个规格要求具有以下相关行:(我曾试图强迫问题与手动require每个*.rblib目录。)

ENV["RAILS_ENV"] ||= 'test' 
Dir[File.expand_path(File.join(File.dirname(__FILE__),'..', 'lib','**','*.rb'))].each {|f| require f} 
require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment')) 
#require 'spec/autorun' 
require 'spec/rails' 

回答