Как отладить рейк-спецификацию, не выполняющую тесты; бесконечная проблема зависания (рельсы 3) - PullRequest
4 голосов
/ 13 июня 2011

Использование rake 0.9.2, rspec, ожидания, 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 не дает никакой дополнительной информации.Я уверен, что я должен делать что-то просто глупо.Похоже, что это началось с недавних проблем, которые у меня были с версиями рейка, следовательно, обновление до рейка 0.9.2, хотя у меня нет конкретных доказательств какой-либо прямой корреляции.Спасибо за любые предложения о том, как отладить это лучше.

Ответы [ 3 ]

6 голосов
/ 16 июня 2011

Тьфу, оказывается, это была проблема с одним из файлов фикстур.Я не использую их, как правило, фабрики и заглушки, и был один с неполной спецификацией, так что похоже, что rspec просто завис на этом.Я понял это, сузив команду для тестирования различных групп, таких как 'rake spec: models', которая работала, затем 'rake spec: controllers', которая зависала.Зашел в сгенерированные спецификации и заметил линии загрузки светильников, убрал их и вуаля.Никогда не скучно ...; -)

2 голосов
/ 05 марта 2016

Для меня это было исправлено после того, как я обновил схему:

bundle exec rake db:migrate

и затем выполнил эту команду:

bundle exec rake db:schema:load

вручную проверьте файл schema.rb, если он был обновлен.

2 голосов
/ 09 марта 2015

ОБНОВЛЕНИЕ: я нашел то, что кажется постоянным решением проблемы из этого вопроса . Я добавил строку ниже к своему config/environments/test.rb.

config.active_record.maintain_test_schema = false

Я столкнулся с точно такой же проблемой. По какой-то прихоти я решил запустить rake db:test:prepare, что, похоже, решило ее для меня, хотя бы временно. После этого я могу запустить rake снова без происшествий один раз, но если я запустлю его снова, я столкнусь с той же проблемой, что и раньше. Кажется, я застрял в этом цикле сейчас. Эта статья помогла пролить свет на эту тему, но я до сих пор не знаю, как навсегда решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...