rake assets:прекомпиляция занимает 28 минут на 1.9.2
-
11-12-2019 - |
Вопрос
У меня есть довольно большое приложение 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
Я вижу, как компилируются активы, и не могу определить длительную задержку для одного актива (хотя кажется, что я вижу в журналах одни и те же активы несколько раз — предположительно потому, что для каждого актива существует несколько шагов?)
Какие еще шаги следует предпринять, чтобы диагностировать проблему?
Решение
В Ruby 1.9.2 наблюдалось серьезное снижение времени загрузки, которое, как я полагаю, росло в геометрической прогрессии с количеством загружаемых файлов.Это очень сильно ударило по приложениям Rails, и я подозреваю, что это причина значительного увеличения времени компиляции ресурсов, которое вы наблюдаете.
Это было исправлено в версии 1.9.3, поэтому попробуйте обновиться до этой версии или перенос загрузочного патча на версию 1.9.2.