2012-01-18 32 views
2

背景:如何优化Windows上的Rails/Rspec加载时间,以秒为单位? (带或不带叉勺)

我使用从发动机院子,这意味着红宝石1.9.2-P290和 的Rails 3.1.1,在Windows 7 X64的所述RailsInstaller 2包。

问题:

在尝试的Ruby on Rails Tutorial和获取自动测试和叉勺按预期工作后,很明显,而RSpec的报道,在几秒钟内完成了测试,实际消耗的时间远远大于和接近半分钟,与屏幕录像中观察到的分秒响应相差甚远。我知道其中大部分可以归因于Rails加载时间(也可以从spork在预加载阶段花费的时间量中明显得出),以及JRuby如何较慢(与Linux上的Ruby相比),但是每rspec 15 + s平均运行(有或没有spork,考虑到加载时间)对于TDD来说是非常不合适的。有没有更多的方法可以将它缩短到几秒钟的订单,而不是切换到Linux?

编辑:我在说这个问题的方式有什么问题吗?

+0

不是你的问题的答案,但我试图在Windows上使用Rails,它很慢,也很困难。为什么要让它比需要的更难?我建议安装Ubuntu(可以在同一台机器上完成)。我在2.5秒内进行单个测试。 – 2012-09-06 15:49:20

+0

@BSeven我开始学习Windows上的Rails,我仍然将它用于各种目的,然后转移到Linux平台进行认真的工作。尽管有更多的选择总是很好的。 – prusswan 2012-09-06 15:55:05

回答

0

这可能是目前最好的。 Windows上的相同设置转换为Linux上的仅仅几秒钟。我还没有在Ruby 1.9.3上进行测试,但是这不可能显着改变这种情况。

+0

Ruby 1.9.3实际上要快得多。 – 2012-09-06 17:31:44

1

Rails加载时间很长。如你所说,这可能是一个TDD杀手。

对于如何解决这个问题的几种方法:

  1. 使用保护通知FS事件和调用使用叉勺分叉铁轨,并调用RSpec的测试,对规范文件或SUT(被测主体运行)文件更改。
  2. 在轨道依赖类(控制器,活动记录模型)之外移动逻辑并改为使用普通的ruby对象。

我使用了两种方法。 第二种方法有很多优点:

  • 您可以没有任何护栏的依赖,因为你没有装护栏,只有特定的必修课
  • 它驱动
  • 测试将运行超快隔离测试你的类你朝着SRP(单一责任原则),其中每个类别/模块 只有整个系统的一小部分
  • 它鼓励DRY(不要重复自己) - 当你有小块时,更容易重用它们。
  • 您正在使用DI(依赖注入)为您的小对象提供上下文,这使得它们更容易测试和重用。

必须注意:

+0

感谢提示,但现在我发现这是一个失败的原因,即使在Linux上,我发现自己不断挑战优化(甚至最小化)JavaScript测试,这往往是非常缓慢,但占用了很大一部分整个套房。尽管我有相当丰富的经验,但我认为Windows只对最初的学习曲线(直到该教程的结论)足够了。 – prusswan 2012-07-20 10:14:16

0

我最近想出了我还没有看到其他地方提到的解决方案:我在运行Ubuntu的

VirtualBox,并将我的项目目录配置为共享文件夹。这意味着Ubuntu盒子总是会看到我的代码的最新版本,所以我可以享受Linux CLI的时间,并且仍然将Windows作为我的开发平台。到目前为止,我一直在使用这个设置只有一个星期左右,但我还没有遇到任何缺点。

+0

是的,但严格来说这并不能解决本地Windows上的速度问题。使用VM是实用的解决方案,但是对于另一个问题(即Windows很慢,但我需要为其他目的运行它) – prusswan 2013-01-03 06:52:43

+0

我完全同意。我只是想借此机会将这个选项放在那里,以防像我这样的人正在寻找解决问题的实际解决方案。 – 2013-01-07 08:50:24

+0

该解决方案类似于在Windows上使用Vagrant。工作好吧! – 2017-04-20 16:26:25

相关问题