2012-11-15 35 views
14

使用Spin运行Guard可以很好地保持我的测试速度,除非资产相关且需要编译。似乎只要我改变了某些东西,测试环境就会重新编译所有资产。我见过部署脚本的例子,它们只重新编译源代码已更改的资源。这可以做测试吗?还是有另一种方法来加快测试的资产编译?如何加快测试资产编译?

我正在使用一个相当具体的设置,所以我会很乐意提供更多的信息,如果需要的话,虽然我觉得这个问题的答案可能在许多情况下,而不仅仅是我的使用。

+0

这是个好问题!所以我正在投票,因为我在预先编译资产时遇到了类似的耗时问题。然而,据我所知,在预编译资产的速度方面没有太多可用的东西!好运 – TheMouseMan

+1

我通常在运行套件之前预先编译资产。如果你正在运行rails 3.2+,那么https://github.com/ndbroadbent/turbo-sprockets-rails3。有了这个完整的编译将会更快。如果你是套件长期运行和/或在CI上运行,并且你做了一个完整的预编译,我也有一个S3解决方案。让我知道你正在运行什么版本的导轨 – mnelson

+0

这听起来很有希望。我现在在Rails 3.2.8上,很快就会更新到3.2.9。我对你的S3解决方案非常感兴趣,因为我正在运行我的测试(我认为这就是你长时间运行的意思),所以只是预编译是不够的。 –

回答

1

你可以看看两个月前写的this article。这似乎相当复杂的任务。内森只写了一个gem that precompiles的变化,取得资产。它可以用于开发和测试环境。

编辑:这里是another article,与加快我们的测试有关。它对于js测试有不同的观点。

+0

和建议一样,但这似乎并没有加快我的测试速度,主要是因为测试环境似乎总是在开始时编译资产。我认为理想情况下,测试套件应该等到编译完成。 –

+0

非常了不起,有一个专门针对该主题的特殊网站。我听说如果来自[Ruby5](http://ruby5.envylabs.com/),它被称为(你不会相信)[fastrailstests.com](http://www.fastrailstests.com)。正如Mikael Jackson曾经说过的那样:“你并不孤单”。 –

+0

那么,该网站根本不包含任何信息,而且我不只是放弃了我的电子邮件地址,我收到了足够多的垃圾邮件。我正在寻找一个明确的答案来解决我的问题;)和'迈克尔!= mikael',但国王肯定地说过;) –

0

例如,您可以避免在您的应用程序js和css文件中添加require_tree

此外,使用适当的文件扩展名 - 如果有东西是js - 则将其命名为正常的js文件。相同的CSS和SCSS。

您可以在本地也预编译的资产已在本地发展的命令rake assets:precompile编译 - 但记得要删除后测试,看看在资产变动下一次(它可以在供应商的文件夹中生成)

+0

这些都是事实,但他们也在Qumara的答案中。我知道资产:预编译,类似的东西对测试来说很好,因为现在有些测试失败了,因为他们必须等待资产进行编译。 –

-2

我知道,但你可以尝试:

在application.js中写入文件的所有js文件按照树顺序是这样的:

// =需要的jQuery

// =需要jquery_ui

// =要求jquery.ui.core

+0

这正是capl所说的。 –