Rails 3.1、rspec、guard 和 spork 在 Windows 上真的很慢 [英] Rails 3.1, rspec, guard and spork is really slow on windows

查看:39
本文介绍了Rails 3.1、rspec、guard 和 spork 在 Windows 上真的很慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力成为一名更好的测试员.设置有很多问题,我想知道是否值得.

I am trying to be a better tester. Having so much problems with the set up that I wonder if it's worth it.

有人可以帮忙吗?

我正在 Windows 机器上运行 Rails 3.1、rspec、guard capybara 和 spork.我使用了卫士猪肉宝石.这是我运行 bundle exec guard 时得到的

I am running Rails 3.1, rspec, guard capybara and spork on a windows box. I use the guard-spork gem. This what I get when I run bundle exec guard

查看在 421.87 秒内完成"这一行.这是一项测试!

Look at the line "Finished in 421.87 seconds". Thats one test!

我看到我收到了一个错误,guard-spork 抱怨没有 fork 支持(Windows 问题),但稍后这一行./magazine_slave.rb:22:in `run'"应该表明 magazine_slave 运行(Windows 运行用杂志代替叉子叉).

I see I get an error with guard-spork complaining about no fork support (Windows problem), but later this line "./magazine_slave.rb:22:in `run'", should indicate that magazine_slave runs (Windows runs spork with magazine instead of fork).

有什么想法吗?

Guard is now watching at 'c:/Users/Andreas/My Documents/Aptana Studio 3 workspace/maktaba'
'awk' is not recognized as an internal or external command,
operable program or batch file.
'awk' is not recognized as an internal or external command,
operable program or batch file.
Starting Spork for Test::Unit & RSpec
ERROR: Guard::Spork failed to achieve its <start>, exception was:
NotImplementedError: fork() function is unimplemented on this machine
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:40:in `fork'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:40:in `spawn_child'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:23:in `launch_sporks'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork.rb:17:in `start'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:322:in `send'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:322:in `run_supervised_task'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:320:in `catch'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:320:in `run_supervised_task'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:153:in `start'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:254:in `run_on_guards'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:253:in `each'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:253:in `run_on_guards'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:252:in `catch'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:252:in `run_on_guards'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:251:in `each'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:251:in `run_on_guards'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:152:in `start'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard/cli.rb:68:in `start'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/bin/guard:6
c:/Ruby/Ruby187/lib/ruby/gems/1.8/bin/guard:19:in `load'
c:/Ruby/Ruby187/lib/ruby/gems/1.8/bin/guard:19

Guard::Spork has just been fired
Guard::RSpec is running, with RSpec 2!
Running all specs
F

Failures:

  1) UserCruds Creates a new user
 Failure/Error: click_button "Submit"
 ActionView::Template::Error:
   You have a nil object when you didn't expect it!
   You might have expected an instance of Array.
   The error occurred while evaluating nil.map
 # ./app/views/users/_form.html.erb:38:in `_app_views_users__form_html_erb___24339687_119563452'
 # ./app/views/users/_form.html.erb:3:in `_app_views_users__form_html_erb___24339687_119563452'
 # ./app/views/users/new.html.erb:3:in `_app_views_users_new_html_erb___963176717_119608284'
 # ./app/controllers/users_controller.rb:52
 # ./app/controllers/users_controller.rb:47:in `create'
 # (eval):2:in `send'
 # (eval):2:in `click_button'
 # ./spec/requests/user_cruds_spec.rb:16
 # ./magazine_slave.rb:22:in `run'
 # magazine_slave_provider.rb:17

Finished in 421.87 seconds
1 example, 1 failure

推荐答案

因为 rspec 加载了 rails 环境,所以很慢.你拥有的宝石越多,它变得越慢

Because rspec loads the rails environment, it's slow. The more gems you have the slower it gets

这就是为什么 spork 是一个很好的工具.它加载 rails 环境,guard 可以在不重新加载 rails 环境的情况下查找更改.但是guard-spork gem中有一个错误.它不适用于 Windows,因为它依赖于 fork.即使是坚硬的 spork 也不要在 windows 上使用叉子 - spork 可以.非 UNIX 系统不支持 Fork.

Thats why spork is a great tool. It loads the rails environment and guard can look for the changes without reloading the rails environment. But there is a bug in the guard-spork gem. It does not work with windows because it depends on fork. Even tough spork do not use fork on windows guard-spork does. Fork is not supported on non-UNIX systems.

我研究了这个问题并最终采用了不同的方法.我制定了 lib 文件夹的逻辑,并且不在规范中包含 spec_helper 文件.然后 Rails 不会被加载,只有特定的测试逻辑.这很快,迫使我编写更具可读性的代码.

I researched the problem and ended up with a different aproach. I facture out the logic to the lib folder and do not include the spec_helper file in the specs. Then rails does not get loaded, only the spesific test logic. This is fast and force me to write more readable code.

观看此视频科里·海恩斯 (Cory Haines) 的演讲,了解有关该主题的更多信息.

Check out this video on a talk by Cory Haines, for more on the subject.

这篇关于Rails 3.1、rspec、guard 和 spork 在 Windows 上真的很慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆