【问题标题】:rake asset:precompile takes 28 minutes on 1.9.2rake 资产:在 1.9.2 上预编译需要 28 分钟
【发布时间】: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


【解决方案1】:

Ruby 1.9.2 在加载时间上有严重的倒退,我相信随着加载的文件数量呈指数增长。这对 Rails 应用程序的打击非常大,我怀疑这是您看到的资产编译时间大大增加的原因。

这已在 1.9.3 中修复,因此请尝试升级到该版本或backporting the load patch to 1.9.2

【讨论】:

  • 升级到 1.9.3 导致 rake 任务回落到可接受的水平。谢谢!
  • 我有 1.9.3。在 Windows 上编译需要大约 15...30 分钟,具体取决于机器速度。
猜你喜欢
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
相关资源
最近更新 更多