在Rails中进行BDD/TDD的最快方法是什么?

4
我希望能获得以下困境的建议:
我非常想在我的第一个真正的Rails项目中尝试BDD,但每次尝试运行cucumber或Rspec时,我都无法克服令人痛苦的等待。我正在运行Windows Vista,并使用rails 3.0.1和ruby 1.9.2p136。我已经尝试了spork,但发现很难跟随hacks并在rails 3.0.1上工作。现在我已经安装了它,并且 - 据说 - 它正在工作(按照此链接上的说明: http://railstutorial.org/chapters/static-pages#sec:spork,不再遇到我自己设置时遇到的任何错误),但我仍然需要等待45-60秒才能运行单个通用cucumber场景。
我不明白Rails社区如何容忍这些等待时间,并仍然使用BDD/TDD实践进行开发。我一直在从RSpec Book学习,没有提到我遇到的荒谬的加载时间(虽然我还有几章没有读)。那么,Rails社区是否忽视了这个问题,还是我遇到了异常延迟?

我正在使用一台相对较快的笔记本电脑(Intel Core 2 Duo CPU T9400,每个CPU频率为2.53Hz),内存为4 GB。

我真的需要一些指导,因为在接近两周的时间里,我一直在尝试让这个工作正常运行,但现在我几乎要放弃BDD/TDD和Rails。

感谢您抽出时间阅读我的抱怨。


1
这是 Ruby 在 Windows 上已知的问题。http://en.wikibooks.org/wiki/Ruby_Programming/Installing_Ruby#Windows_is_slow - Eric
@ConcernedNewbie,遵循Apork的自述文件是非常简单的事情。我只花了几分钟来安装和配置spec_helper.rb,它将我的Ubuntu VirtualBox(主机为Win7)的启动时间从30秒降至4秒。还要考虑到“冷”启动比“热”启动慢1.5倍。 - Alexey
4个回答

6

我不明白为什么Rails社区能容忍这些等待时间。

你说得对,那些等待时间是无法忍受的。理智的Rails开发者不会容忍这种情况。他们也确实没有容忍,因为几乎没有Rails开发者使用Windows。

做自己一个人的好朋友,别再去撞墙了。在VMWare或Virtualbox中安装Linux,加载Rails和RSpec/Cucumber,并进行比较。我认为你会有更愉快的体验。

顺便说一下,我在E6600 2.4Ghz主机上运行Ubuntu,在XP下运行,我的时间比你的四核盒子要好得多。

如果你无法被说服尝试VM方法,请查看JetBrains的Rubymine IDE -- 它可以很好地运行RSpec/Rails。


非常感谢您的建议。我已经查找了一些操作系统仿真器,但是我没有找到合适的东西 - 我真的不知道该怎么做。我有一个Debian的安装光盘,打算尝试将其作为双启动安装在我的系统上,但是有人报告说当他们尝试让Vista和Debian共存时遇到了某些问题,因此我被劝阻了。然而,您为我提供了一些很好的替代方案。我一定会检查VMWare和Virtualbox。 - CocernedNewbie
1
“我真的不知道我在做什么。” “是啊,我懂那种感觉 :)。如果你想在Linux上运行,请查看这些说明:http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you。它们将有助于避免一些常见的陷阱。” - zetetic
1
我完全同意这个观点!我从未在Windows和Ruby/Rails上有过任何好的经验。 - raidfive

1

我曾尝试在Windows平台上使用RoR,但速度非常慢(rake db:init命令需要长达40秒的时间)。之后我开始使用FreeBSD,类似的命令只需要大约10秒钟。

我个人没有尝试过Cucumber,但是在相同的硬件上(没有虚拟机),使用Rspec2+ Spork+ Webrat运行60个测试只需要10秒钟。


感谢您的建议和经验分享。至今为止,我还没有遇到过任何一个能够提供Windows和其他操作系统运行时间比较的轶事式比较的人 - 大多数开发人员只使用Linux系统。:/ 再次感谢您。 - CocernedNewbie

0

我不能对在Windows下的Ruby开发做出任何评论,但是单个测试需要45-60秒似乎太长了。虽然4 GB应该足够,但你在测试时有观察过内存吗?是否有其他正在运行的程序消耗大量的内存或CPU(除了你的操作系统 ;))?


我已经在各种条件下运行了测试。与我尝试测试的同时运行的内容似乎对完成测试所需的时间几乎没有影响。 - CocernedNewbie

0

您没有提到是否正在运行防病毒软件,但以防万一:

我建议您验证一下您的防病毒软件是否在每次测试迭代时对文件进行实时检查。也许您需要将开发目录添加到防病毒软件的排除列表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接