2011-06-13 1 views
4

사용 퀴 0.9.2, RSpec에, 기대, 조롱 2.6.0, 2.6.4 RSpec에 코어, RSpec에 레일 2.6.1rake spec을 디버깅하여 테스트를 실행하지 않는 방법; 무한 매달려 문제 (레일 3)

I는 레이크 레일을 실행하거나 RSpec에 스펙 path/to/spec 나는 테스트가 실제로 실행될 것을 기대할 때까지 정상 출력을 얻는다. 작업을 종료하려면 프로세스 kill-9 % 1을 (를) 종료해야합니다.

내 gemfile :

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로 실행하면 추가 정보가 제공되지 않습니다. 나는 바보 같은 짓을하고 있다고 확신한다. 이것은 레이크 버전과 관련된 최근의 문제로 시작한 것으로 보이는데, 따라서 직접적인 상관 관계에 대한 구체적인 증거는 없지만 갈퀴 0.9.2로 업그레이드되었습니다. 더 나은 디버깅 방법에 대한 제안을 해주셔서 감사합니다.

답변

5

음, 조명기 파일 중 하나에 문제가 있음이 드러났습니다. 나는 그것들을 사용하지 않는다. 보통 공장과 스텁들이다. 그리고 불완전한 명세를 가진 것이 있었기 때문에 rspec이 그냥 매달려있는 것처럼 보인다. 나는 'rake spec : models'과 같은 'rake spec : controllers'와 같은 다른 그룹을 테스트하라는 명령을 좁혀서 알아 냈습니다. 생성 된 스펙으로 이동하여 조명기를로드하는 선을 발견하고 제거하고 보았다. ...-))

2

업데이트 : this question에서 문제에 대한 영구적 인 해결책이있는 것으로 나타났습니다. 나는 아래 라인을 나의 config/environments/test.rb에 추가했다.

config.active_record.maintain_test_schema = false 

이 똑같은 문제가 발생했습니다. 변덕스럽게, 나는 적어도 임시적으로 나를 위해 그것을 해결하는 것처럼 보였던 rake db:test:prepare를 달리기로 결정했다. 그것을 실행 한 후에, 다시 한번 아무런 문제없이 rake을 실행할 수 있지만, 다시 실행하면 이전과 같은 문제가 발생합니다. 나는 지금이주기에 갇혀있는 것 같다. This article은 주제에 대해 밝히는 데 도움이되었지만 여전히 문제를 영구적으로 해결하는 방법을 모르겠습니다.

bundle exec rake db:migrate 

을하고이 명령을 실행 :

2

은 나에게는 내가 스키마를 업데이트 한 후 고정이 업데이트 된 경우

bundle exec rake db:schema:load 

수동으로 schema.rb 파일을 확인합니다.