我正在将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 spec
和bundle 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
每个*.rb
在lib
目录。)
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'