Eu tenho um aplicativo Rails que estou tentando testar no ambiente de produção. Fiz a execução RAILS_ENV=production rake assets:precompile
que gerou todos os meus ativos em / public / assets. O problema é que, quando inicio meu aplicativo, RAILS_ENV=production rails s thin
recebo:
ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):
Este arquivo existe embora em /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css
.
Alguma idéia de por que estou recebendo isso RoutingError
?
fonte
thin
em minha máquina de desenvolvimento. Eu estava compilando os ativos, masapplication.css
estava vazio e o log do servidor deu erro no OP.config.serve_static_files
.config.serve_static_assets
foi descontinuado e será removido no Rails 5.Além do que Ryan disse acima, o guia de pipeline de ativos do Rails descreve como configurar o Apache ou o nginx para servir os ativos estáticos para você.
http://guides.rubyonrails.org/asset_pipeline.html
Você realmente deve configurar o nginx ou o Apache para servir ativos estáticos, pois eles são muito mais otimizados para esta tarefa do que o vira-lata / fino / unicórnio.
fonte
Acabei de resolver o mesmo problema. No meu caso, a resposta de Ryan não foi útil. Bratsche apontou para os Guias do Rails, infelizmente isso também não funcionou para mim. No entanto, o recurso foi útil. Então peguei a configuração do Nginx e adicionei a diretiva raiz , apontando para o diretório público. Sem isso, não funciona.
Reinicie o nginx, e é isso.
fonte
Na verdade, você não precisou modificar nenhuma configuração padrão. Você apenas recompila o arquivo de ativos novamente .
remover público / ativos
compilação de ativos
fonte
O Rails 4.2 adicionou / alterou esta linha nos arquivos config / environment / staging.rb e production.rb:
Se RAILS_SERVE_STATIC_FILES não estiver definido e você for um ativo de serviço do servidor Rails (como no Unicorn), o padrão será "false", e o RoutingError ocorrerá.
Esta é uma solução fácil:
fonte
No trilhos 5, a
config.serve_static_files
opção mudou, então agora você precisa terservir ativos localmente.
fonte
tente o código abaixo:
config / environment / production.rb
então execute o comando:
empurre todos os arquivos de compilação e arquivo de manifesto para o servidor.
fonte
Eu uso mina + puma + nginx para implantar meu aplicativo Rails 5.
verifique config / environment / production.rb
O NGINX já lida com isso , configura-o corretamente
as coisas vão funcionar bem.
fonte
Se alguém chegar aqui com o mesmo erro no ambiente de teste que eu, aqui está o que me ajudou:
então:
para encontrar o
spring server
processo e seu PID e depois matá-lo via:fonte