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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top