2011-03-29 139 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' 

回答