Автотест медленно реагирует на Spork и Rspec под Rails 3.0.9

Все работает, но медленно.

Я знаю, что Spork работает, потому что rspec spec/ дает ответ менее чем за две секунды, и я знаю, что Autotest работает, так как он в конечном итоге выдает соответствующее уведомление Growl, когда я вношу изменения в код контроллера. Проблема в том, что Autotest слишком долго отвечает: около 16 секунд. Пожалуйста, помогите мне понять, что происходит не так.

Я новичок в Rails и следую учебнику Майкла Хартла по Rails 3.

Platform:   Mac OS X 10.5.8
            Xcode 3.1.4
Ruby:       v. 1.9.2 p180  (with RVM)
Rails:      v. 3.0.9

Что бы это ни стоило, я установил Autotest и Spork с помощью Bundler и вызвал их (каждый на отдельной вкладке окна терминала) с помощью bundle exec spork и bundle exec autotest. spork (без "bundle exec") также работает нормально, но autotest (без "bundle exec") выдает сообщение об ошибке "command not found".

Gemfile моего проекта (взято из учебника и видео Хартла):

source 'http://rubygems.org'

gem 'rails', '3.0.9'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
gem 'gravatar_image_tag', '1.0.0.pre2'
gem 'will_paginate', '3.0.pre2'

group :development do
  gem 'rspec-rails', '2.6.1'
  gem 'annotate', '2.4.0'
  gem 'faker', '0.3.1'
end

group :test do
  gem 'rspec-rails', '2.6.1'
  gem 'webrat', '0.7.1'
  gem 'spork', '0.9.0.rc8'
  gem 'autotest', '4.4.6'
  gem 'autotest-rails-pure', '4.1.2'
  gem 'autotest-fsevent', '0.2.4'
  gem 'autotest-growl', '0.2.9'
  gem 'factory_girl_rails', '1.0'
end

Файл .autotest моего проекта (также взятый из Hartl):

require 'autotest/growl'
require 'autotest/fsevent'
Autotest.add_hook :initialize do |autotest|
  autotest.add_mapping(/^spec\/requests\/.*_spec\.rb$/) do
    autotest.files_matching(/^spec\/requests\/.*_spec\.rb$/)
  end  
end

Что случается:

Когда я сохраняю изменение в одном из моих файлов controller.rb (или файлов controller_spec.rb), проходит около 8 секунд, прежде чем на вкладке терминала автотестирования появляется какая-либо активность, которая на данный момент представляет собой просто ряд дефисов, предшествующих и затем несколько пустых строк. Примерно через 7 секунд на вкладке автотеста появится следующее сообщение:

/Users/jlee/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -rrubygems -S /Users/jlee/rails_projects/sample_app_jbl/autotest/ruby/1.9.1/gems/rspec-core-2.6.4/bin/rspec --tty '/Users/jlee/rails_projects/sample_app_jbl/spec/controllers/pages_controller_spec.rb'

За этим почти сразу следует активность на вкладке терминала spork и ожидаемые результаты теста во всех окнах терминала и в уведомлении о рычании. Так что все работает, просто S-L-O-W-L-Y! Я с нетерпением жду предложений о том, как сократить первые пятнадцать секунд ответа автотеста.

8/7/2011


person barlowlee    schedule 07.08.2011    source источник
comment
У вас такое же поведение с ruby ​​​​1.8 или 1.9.2-head? Может быть проблема с медленным требованием   -  person shingara    schedule 07.08.2011
comment
Когда автотест, наконец, ответит, вы уверены, что он использует Spork? (т. е. на вкладке терминала Spork вы видите что-то вроде «Выполнение тестов с аргументами….?   -  person Dylan Markow    schedule 07.08.2011
comment
Шингара: Я использовал только Ruby 1.9.2-p180. Как я могу определить, является ли это проблемой медленного запроса? Дилан: Я уверен, что он использует Spork. На вкладке терминала Spork он читает Запуск тестов с аргументами [--color, --tty,... и путь к файлу controller_spec.rb...] Но это сообщение появляется только через 15 секунд после того, как я сохраните изменения в файле контроллера.   -  person barlowlee    schedule 08.08.2011


Ответы (1)


Попробуйте добавить --drb в файл .rspec в корне вашего проекта: http://maxjustus.tumblr.com/post/1322305832/rspec-2-rails-3-autotest-and-spork

person JohnMetta    schedule 21.09.2011
comment
Спасибо, Джон, но у меня с самого начала был --drb в файле .rspec в корневом каталоге моего проекта. Я почти отказался от автотеста. Мне повезло с watchr, но результаты пока ненадежны. На данный момент проще всего просто набирать rspec spec/ каждый раз, когда я хочу запустить тест. - person barlowlee; 27.09.2011
comment
Кстати, это была моя проблема, чего бы это ни стоило. Spork вообще не реагировал, когда автотест делал свое дело. Это также ничего не делало, когда я запускал rspec spec. Спасибо! - person slant; 11.05.2012