Rails2.xアプリケーションをRails3.xに変換中です。Rails 2.xプロジェクトの仕様は、現在すべて合格で実行されます。
ただし、スペックをRails 3.xアプリケーションに移動した後、スペックは消滅し、ディレクトリSmsCommand::Base
で定義された基本クラス()が見つかりません。Rails.root + '/lib'
私はスペックを実行しようとしましたが、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
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'