rake asset:precompile leva 28 minutos em 1.9.2
-
11-12-2019 - |
Pergunta
Eu tenho um aplicativo Rails bem grande (Rails 3.2.3), usando o pipeline de ativos.Existem alguns arquivos na pasta de ativos.
Abaixo de 1.8.7, em execução rake assets:precompile
leva 4 minutos.Isso é longo, mas devido ao grande número de ativos estou disposto a tolerá-lo.
O problema é que depois de atualizar o aplicativo para 1.9.2, rodando rake assets:precompile
leva 28 minutos.
Aqui estão as versões relevantes das gemas:
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)
Quando eu tail -f log/production.log
Vejo os ativos sendo compilados e não consigo identificar o longo atraso em um único ativo (embora pareça que vejo os mesmos ativos várias vezes nos logs - provavelmente porque há várias etapas para cada ativo?)
Que outras etapas devo tentar para ajudar a diagnosticar qual é o problema?
Solução
Ruby 1.9.2 teve regressões severas no tempo de carregamento, que acredito ter crescido exponencialmente com o número de arquivos carregados.Isso atingiu os aplicativos Rails com muita força, e suspeito que seja a causa do grande aumento no tempo de compilação de ativos que você está vendo.
Isso foi corrigido na versão 1.9.3, então tente atualizar para isso ou backport do patch de carregamento para 1.9.2.