【发布时间】:2012-05-18 16:02:44
【问题描述】:
我有一个非常大的 Rails 应用程序(Rails 3.2.3),使用资产管道。 assets文件夹里有不少文件。
在 1.8.7 下,运行 rake assets:precompile 需要 4 分钟。这很长,但由于资产数量庞大,我愿意容忍它。
问题是应用升级到 1.9.2 后,运行rake assets:precompile 需要 28 分钟。
以下是相关的 gem 版本:
rails (= 3.2.3)
uglifier (1.2.3)
execjs (~> 1.3.0)
therubyracer (~> 0.9.9)
libv8 (~> 3.3.10)
sprockets (2.1.2)
hike (~> 1.2)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
当我 tail -f log/production.log 看到正在编译的资产时,我无法确定单个资产的长时间延迟(尽管我确实在日志中多次看到相同的资产——大概是因为有每个资产有多个步骤?)
我应该尝试哪些其他步骤来帮助诊断问题所在?
【问题讨论】:
-
1.9.3 打破了其他一些东西,但它在我要检查的事情清单上。但这应该在 1.9.2 上可以正常工作...
-
确实如此,但 1.9.2 的加载时间出现了严重的回归,在 1.9.3 中已修复。您可能想尝试 backporting the patch 安装 1.9.2 并查看是否有帮助。不过这只是猜测。
-
我最终升级到了 1.9.3,现在资产编译大约需要 3-4 分钟。
-
@AndrewMarshall,愿意回答这个问题,以便我将您的问题标记为正确的吗?
-
另外,为了完整起见,问题肯定出在样式表文件夹中,因为删除它并在 1.9.2 上运行资产预编译会产生快速结果。一定是应用程序中样式表的绝对数量? /耸耸肩。
标签: ruby-on-rails ruby asset-pipeline ruby-1.9.2 ruby-1.8.7