如何优化Windows上的Rails / Rspec加载时间到秒? (有或没有叉)

背景:

我在Windows 7 x64上使用Engine Yard的RailsInstaller 2包,这意味着Ruby 1.9.2-p290和Rails 3.1.1。

问题:

在尝试Ruby on Rails教程时 ,在获得自动testing和spork按预期工作之后,很显然,rspec报告testing在几秒钟内完成,实际耗用的时间远大于此,接近半分钟与截屏中观察到的瞬间反应相差甚远。 我知道,其中大部分可以归因于Rails的加载时间(也可以从spork花费在预加载阶段的时间量显而易见),以及JRuby如何较慢(与Linux上的Ruby相比),但是每rspec的15 + s平均运行(有或没有spork,考虑到加载时间)对于TDD来说是非常不合适的。 还有更多的方法可以将其缩短到几秒钟而不是切换到Linux?

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

Solutions Collecting From Web of "如何优化Windows上的Rails / Rspec加载时间到秒? (有或没有叉)"

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

如何解决这个问题有几种方法:

  1. 使用Guard来通知fs事件并使用spork调用分叉轨道,并调用在规范文件或SUT(被测试主题)文件更改上运行的rspec测试。
  2. 移动轨道依赖类(控制器,活动记录模型)之外的逻辑,并使用普通的ruby对象。

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

  • 你可以单独测试你的类而不依赖于rails
  • 测试将运行速度超快,因为您不加载轨道,只有特定的必需类
  • 它使您朝着SRP(单一责任原则)迈进,每个课程/模块占整个系统的一小部分
  • 它鼓励干(不要重复自己) – 当你有小块时,更容易重用它们。
  • 您正在使用DI(依赖注入)为您的小对象提供上下文,这使得它们更易于测试和重用。

必须注意:

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

我最近想出了一个我在其他地方没有提到的解决方案:

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