自动测试在Rails 3.0.9下使用Spork和Rspec缓慢响应

时间:2011-08-07 18:32:31

标签: ruby-on-rails macos autotest spork

一切正常,但很慢。

我知道Spork正在工作,因为rspec spec/会在两秒内产生响应,我知道自动测试正在工作,因为当我更改控制器代码时,它最终会生成一个合适的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,并使用bundle exec sporkbundle exec autotest调用它们(每个都在自己的终端窗口选项卡下)。 spork(没有" bundle exec")也运行良好,但autotest(没有" bundle exec")会产生"命令未找到& #34;错误消息。

我的项目的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的终端选项卡上的活动,以及所有终端窗口和咆哮通知中的预期测试结果。所以它全部工作,只是S-L-O-W-L-Y!我非常渴望得到关于如何从自动测试的响应中减少前十五秒的建议。

2011/8/7

1 个答案:

答案 0 :(得分:1)

尝试将--drb添加到项目根目录的.rspec文件中:http://maxjustus.tumblr.com/post/1322305832/rspec-2-rails-3-autotest-and-spork