Я нахожусь в процессе преобразования приложения Rails 2.x в Rails 3.x.Спецификации проекта Rails 2.x выполняются со всеми проходящими в настоящее время.
Однако после перемещения спецификаций в приложение Rails 3.x спецификации умирают, не в состоянии найти базовый класс (SmsCommand::Base
), определенный в *Каталог 1004 *.Я попытался запустить спецификации только с 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
* 1020.* Кажется, что автозагрузчик Rails не работает для спецификаций или просто не загружает каталог / lib вообще.
Вывод rake spec
:
/Users/xxx/.rvm/gems/ruby-1.9.2-p180@a_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)>'
Myspec_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'