Confusão sobre ativos de rake: limpar / limpar no pipeline de ativos em trilhos
-
27-10-2019 - |
Pergunta
Alguém poderia me explicar o que o comando rake assets:clean
realmente faz?Infelizmente os guias Rails não mencionam isso.Existe também o comando rake assets:cleanup
.Qual é a diferença?
Além disso, alguém poderia me dizer quando devo executar rake assets:precompile
na produção.Devo executá-lo no console do servidor depois de implantar todos os meus arquivos de aplicativo em meu servidor de produção?Ou eu precompile
na minha máquina local e, em seguida, faço uma implantação de todos os arquivos?
Obrigado a todos
Solução
Nota: Esta resposta é específica do trilho 3.Para o rails 4 e posterior, veja outras respostas aqui.
Se você pré-compilar em sua máquina local, poderá enviar esses ativos gerados para o repositório e prosseguir com a implantação.Não há necessidade de compilá-los na máquina de produção.
Mas isso apresenta um problema: agora, quando você altera os arquivos de origem (coffescript / scss), o aplicativo não seleciona as alterações, porque, em vez disso, servirá arquivos pré-compilados.rake assets:clean
exclui esses arquivos pré-compilados.
Em meus projetos, os ativos são pré-compilados como parte da implantação.Capistrano torna isso muito fácil.
Além disso, nunca ouvi falar em rake assets:cleanup
.
Outras dicas
Execute rake assets:clobber
para realmente limpar os ativos.
http://www.dixis.com/?p=735
A resposta de Sergio estava completamente correta no Rails 3. rake assets:clean
excluiu todos os ativos que haviam sido pré-compilados no diretório public/assets
.
No Rails 4, você executa rake assets:clobber
para fazer a mesma coisa.
Se você executar rake assets:precompile
com a seguinte configuração (por padrão, ativada na preparação e produção):
# config/environments/production.rb
config.assets.digest = true
Seus recursos compilados recebem um carimbo de data / hora.Isso significa que você pode compilar seus novos ativos enquanto deixa os antigos no lugar.Normalmente, você deseja fazer isso na produção para que seu site ainda acesse os arquivos antigos enquanto executa o precompile
para criar seus novos arquivos (porque você adicionou um novo css / javascript).Agora você deseja se livrar dos arquivos antigos que não estão mais em uso.O clean
remove as versões antigas dos ativos pré-compilados, deixando os novos ativos no lugar.
rake assets:clean
remove ativos compilados.Ele é executado por cap deploy:assets:clean
para remover ativos compilados, geralmente de um servidor remoto.
cap deploy:clean
remove versões antigas, geralmente de um servidor remoto.Não é rake assets:clean
rake!= cap
rake assets:clean
agora é executado por cap deploy:cleanup_assets
.Adicione require 'capistrano/rails/assets'
ao seu Capfile e você obterá esta tarefa cap.Minha versão capistrano é v3.2.1.
limpe os arquivos não rastreados com git clean -f
para arquivos e git clean -f -d
para diretórios