1

Rails2.xアプリケーションをRails3.xに変換中です。Rails 2.xプロジェクトの仕様は、現在すべて合格で実行されます。

ただし、スペックをRails 3.xアプリケーションに移動した後、スペックは消滅し、ディレクトリSmsCommand::Baseで定義された基本クラス()が見つかりません。Rails.root + '/lib'私はスペックを実行しようとしましたが、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

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それぞれのマニュアルで問題を強制しようとしました。)*.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'
4

1 に答える 1

0

これを読んでから:

https://rails.lighthouseapp.com/projects/8994/tickets/5218-rails-3-rc-does-not-autoload-from-lib

.../libデフォルトでは自動ロードされておらずapplication.rb、何らかの理由で実際に警告は表示されません。

追加する

config.autoload_paths += %W(#{config.root}/lib)

Applicationの問題を修正しました。

于 2011-03-29T19:51:39.720 に答える