这一切都在工作,但速度很慢。
我知道 Spork 正在工作,因为rspec spec/
会在两秒内产生响应,并且我知道 Autotest 正在工作,因为当我对控制器代码进行更改时,它最终会产生适当的 Growl 通知。问题是Autotest
响应时间太长:大约 16 秒。请帮我弄清楚出了什么问题。
我是 Rails 新手,并遵循 Michael Hartl 的 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
值得一提的是,我使用 Bundler 安装了 Autotest 和 Spork,并使用 and 调用它们(每个都在自己的终端窗口选项卡下bundle exec spork
)bundle exec autotest
。 spork
(没有“bundle exec”)也可以正常运行,但是autotest
(没有“bundle exec”)会产生“找不到命令”错误消息。
我项目的 Gemfile(取自 Hartl 的教程和视频):
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 的终端选项卡上的活动,以及所有终端窗口和咆哮通知中的预期测试结果。所以这一切都在工作,只是慢慢地!我渴望获得有关如何缩短自动测试响应的前 15 秒的建议。
2011 年 8 月 7 日