我有一个非常大的rails应用程序(Rails 3.2.3),使用资产管道。资产文件夹中有相当多的文件。
在1.8.7下,运行rake assets:precompile
需要4分钟。这很长,但由于我愿意容忍它的资产数量庞大。
问题是,在将应用升级到1.9.2后,运行rake assets:precompile
需要 28分钟。
以下是相关的宝石版本:
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
时,我看到正在编译的资产,我无法确定单个资产的长延迟(尽管看起来我在日志中多次看到相同的资产 - 可能是因为每个资产有多个步骤?)
我应该尝试哪些其他步骤来帮助诊断问题所在?
答案 0 :(得分:1)
Ruby 1.9.2在加载时间方面有严重的回归,我认为随着加载的文件数量呈指数增长。这对Rails应用程序的打击非常困难,我怀疑这是你看到的资产编译时间大大增加的原因。
这已在1.9.3中修复,因此请尝试升级到该版本或backporting the load patch to 1.9.2。