【问题标题】:Autotest responds slowly with Spork and Rspec under Rails 3.0.9在 Rails 3.0.9 下 Autotest 使用 Spork 和 Rspec 响应缓慢
【发布时间】:2012-07-02 22:39:11
【问题描述】:

一切正常,但速度很慢。

我知道 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,并使用 bundle exec sporkbundle 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 的终端选项卡上的活动,以及所有终端窗口和咆哮通知中的预期测试结果。所以一切正常,只是 S-L-O-W-L-Y!我渴望获得有关如何缩短自动测试响应的前 15 秒的建议。

2011 年 8 月 7 日

【问题讨论】:

  • 你对 ruby​​ 1.8 或 1.9.2-head 有同样的行为吗?可能是缓慢的需求问题
  • 当自动测试最终响应时,您确定它使用的是 Spork 吗? (即在 Spork 终端选项卡中,您是否看到类似“使用 args 运行测试....”的内容?
  • Shingara:我只用过 Ruby 1.9.2-p180。我如何确定它是否是“慢需求问题”? Dylan:我确定它使用的是 Spork。在 Spork 终端选项卡中,它显示“使用 args [“--color”、“--tty”、... 和 controller_spec.rb 文件的路径运行测试...] 但该消息没有出现直到我将更改保存到控制器文件后 15 秒。

标签: ruby-on-rails macos autotest spork


【解决方案1】:

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

【讨论】:

  • 谢谢,John,但我从一开始就在项目根目录的 .rspec 文件中添加了 --drb。我几乎放弃了自动测试。我对 watchr 有一些运气,但到目前为止结果并不可靠。目前,最简单的方法是在每次我想运行测试时输入 rspec spec/。
  • 顺便说一句,这是我的问题,值得。当自动测试完成它的事情时,Spork 根本没有响应。当我运行rspec spec 时,它也没有做任何事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2012-01-19
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多