4

rake 0.9.2、rspec、expectation、mocks 2.6.0、rspec-core 2.6.4、rspec-rails 2.6.1 を使用

rake rails や rspec spec path/to/spec を実行すると、テストが実際に実行されることを期待するまで通常の出力が得られますが、それ以上は何もありません。タスクを終了するには、プロセス kill-9 %1 を強制終了する必要があります。

私の宝石ファイル:

source 'http://rubygems.org'

gem 'rails', '3.0.4'
gem 'rake', '0.9.2'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

# gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'warden'
gem 'devise', "= 1.2.1"
gem 'devise_invitable'
gem 'mysql'
gem 'will_paginate', "~> 3.0.pre2"
gem 'acts-as-taggable-on'
gem 'acts_as_list'
gem 'activemerchant'
gem 'braintree'
gem 'bartt-ssl_requirement', :require => 'ssl_requirement'
gem "paperclip"
gem 'jeditable-rails'
gem 'rdiscount'
gem "nifty-generators", :group => :development

gem "exception_notification", :git => "git://github.com/rails/exception_notification", :require => 'exception_notifier'

# Deploy with Capistrano
gem 'capistrano'
gem 'capistrano-ext'



# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
  gem 'webrat', ">=0.7.2"
  gem "rspec-rails"
  gem "ZenTest"
  #gem "autotest"
  #gem "autotest-rails"
  gem "cucumber",         :git => "git://github.com/cucumber/cucumber.git"
  gem "database_cleaner", :git => 'git://github.com/bmabey/database_cleaner.git'
  gem "cucumber-rails", ">= 0.3.2",   :git => "git://github.com/cucumber/cucumber-rails.git"
  gem 'factory_girl_rails'
  gem "capybara"
  #gem "capybara-envjs"
  gem "launchy"
  gem "spork"
  #gem "ruby-debug"
  gem "cancan"
end

シェルからの出力:

bill$ rake spec
/Users/bill/.rvm/gems/ruby-1.9.2-head/gems/bundler-1.0.0/lib/bundler.rb:197: warning: Insecure world writable dir /opt in PATH, mode 040777
/Users/bill/.rvm/rubies/ruby-1.9.2-head/bin/ruby -S bundle exec rspec ./spec/controllers/products_controller_spec.rb ./spec/controllers/roles_controller_spec.rb ./spec/controllers/users_controller_spec.rb ./spec/models/product_spec.rb ./spec/models/role_spec.rb ./spec/models/user_spec.rb
/Users/bill/.rvm/gems/ruby-1.9.2-head/gems/bundler-1.0.0/lib/bundler.rb:197: warning: Insecure world writable dir /opt in PATH, mode 040777
/Users/bill/.rvm/gems/ruby-1.9.2-head/gems/bundler-1.0.0/lib/bundler.rb:197: warning: Insecure world writable dir /opt in PATH, mode 040777

そして、私が殺すまでそれ以上何もしません。--trace を指定して実行しても、追加情報は提供されません。私は単純にばかげたことをしなければならないと確信しています。これは、rake バージョンで発生していた最近の問題から始まったようです。そのため、rake 0.9.2 にアップグレードしましたが、直接的な相関関係を示す具体的な証拠はありません。これをより適切にデバッグする方法についての提案に感謝します。

4

3 に答える 3

6

うーん、フィクスチャ ファイルの 1 つに問題があることがわかりました。私はそれらを使用しません。通常はファクトリとスタブであり、仕様が不完全なものがあったため、rspec がそれにぶら下がっていたようです。コマンドを絞り込んで、「rake spec:models」が機能し、「rake spec:controllers」がハングしたなど、さまざまなグループをテストすることで解決しました。生成された仕様に行き、フィクスチャをロードしている行に気づき、それらを削除して出来上がりました。鈍いことはありません...;-)

于 2011-06-16T19:43:00.503 に答える
2

更新:この質問から、問題に対する恒久的な解決策と思われるものを見つけました。以下の行をに追加しましたconfig/environments/test.rb

config.active_record.maintain_test_schema = false

これとまったく同じ問題が発生しました。気まぐれに、実行rake db:test:prepareすることにしました 、少なくとも一時的には解決したようです。それを実行した後、rake問題なく再度実行できますが、再度実行すると、以前と同じ問題が発生します。私は今、このサイクルに行き詰まっているようです。この記事は、この問題に光を当てるのに役立ちましたが、問題を完全に解決する方法はまだわかりません.

于 2015-03-09T18:52:13.917 に答える
2

私にとっては、スキーマを更新した後に修正されました。

bundle exec rake db:migrate

次に、次のコマンドを実行しました。

bundle exec rake db:schema:load

schema.rb ファイルが更新されているかどうかを手動で確認します。

于 2016-03-05T19:40:07.093 に答える