rake актив: предварительная компиляция занимает 28 минут на 1.9.2

У меня есть довольно большое приложение для рельсов (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 вижу, что ресурсы компилируются, я не могу точно определить длительную задержку для одного ресурса (хотя мне кажется, что я вижу одни и те же ресурсы несколько раз в журналах — предположительно, потому что для каждого ресурса есть несколько шагов). ?)

Какие еще шаги следует предпринять, чтобы помочь диагностировать проблему?


person Ben Scheirman    schedule 18.05.2012    source источник
comment
1.9.3 ломает несколько других вещей, но это в моем списке вещей, которые нужно проверить. Но это должно нормально работать на 1.9.2...   -  person Ben Scheirman    schedule 18.05.2012
comment
Действительно, но в 1.9.2 были серьезные регрессии со временем загрузки, которые были исправлены в 1.9.3. Вы можете попробовать бэкпорт патча к вашей установке 1.9.2 и посмотрите, поможет ли это. Хотя это всего лишь предположение.   -  person Andrew Marshall    schedule 18.05.2012
comment
В итоге я обновился до 1.9.3, и компиляция ресурсов теперь занимает примерно 3-4 минуты.   -  person Ben Scheirman    schedule 19.05.2012
comment
@AndrewMarshall, не хочешь ответить на вопрос, чтобы я мог отметить твой как правильный?   -  person Ben Scheirman    schedule 19.05.2012
comment
Кроме того, просто для полноты картины проблема определенно заключалась в папке таблиц стилей, так как ее удаление и запуск предварительной компиляции ресурсов в 1.9.2 дали быстрые результаты. Должно быть огромное количество таблиц стилей в приложении? / пожимает плечами.   -  person Ben Scheirman    schedule 19.05.2012
comment
Сделанный! Смотри ниже. Рад, что помог :).   -  person Andrew Marshall    schedule 20.05.2012


Ответы (1)


Ruby 1.9.2 имел серьезные регрессии во времени загрузки, которое, как мне кажется, росло в геометрической прогрессии с увеличением количества загруженных файлов. Это очень сильно ударило по приложениям Rails, и я подозреваю, что это причина значительного увеличения времени компиляции ресурсов, которое вы видите.

Это было исправлено в версии 1.9.3, поэтому попробуйте обновиться до нее или перенос патча загрузки на 1.9.2.

person Andrew Marshall    schedule 20.05.2012
comment
Обновление до 1.9.3 привело к тому, что задача rake вернулась к приемлемым уровням. Спасибо! - person Ben Scheirman; 21.05.2012
comment
У меня 1.9.3. В Windows компиляция занимает примерно 15...30 минут в зависимости от скорости машины. - person Paul; 17.09.2012