Все работает, но медленно.
Я знаю, что 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