Por que recebo “cache: [GET /] miss” em produção usando o WebRick?

9

Não posso testar meu site no modo de produção usando o WebRick, pois isso está gerando erros de cache. Nos modos de desenvolvimento e teste, tudo funciona perfeitamente.

Eu configurei esta opção em config / environments / production.rb:

config.serve_static_assets = true

E então eu corri:

bundle exec rake assets:precompile

Agora eu inicio o servidor:

david$ rails s -e production
=> Booting WEBrick
=> Rails 3.2.1 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-01-31 19:52:35] INFO  WEBrick 1.3.1
[2012-01-31 19:52:35] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0]
[2012-01-31 19:52:35] INFO  WEBrick::HTTPServer#start: pid=13329 port=3000

E quando eu vou para link eu recebo "Desculpe, mas algo deu errado." No terminal, isso é o que gera:

cache: [GET /] miss

Estou parado aqui. Eu não tenho ideia do que fazer.

    
por David Morales 31.01.2012 в 19:54
fonte

4 respostas

5

O problema está no pipeline de ativos, que precisa estar bem configurado no modo de produção, já que os arquivos não são pré-compilados automaticamente.

No meu caso, eu estava inserindo um arquivo javascript (com javascript_include_tag ) que estava presente apenas em uma página, portanto, ele não foi incluído no manifesto application.js.

Nesse caso, o pipeline de ativos não está pré-compilando o arquivo ao executar assets:precompile .

Para incluir o arquivo ausente, precisamos editar config/environments/production.rb e adicionar esta linha:

config.assets.precompile += %w( script1.js )

Você notará que esta linha já existe, mas é comentada. Leia o comentário para mais esclarecimentos. Para mais informações, consulte o guia oficial de recursos .

    
por David Morales 01.02.2012 / 18:19
fonte
0

Esta mensagem sobre páginas ausentes envia um middleware Rack :: Cache. Se você não precisa usar o cache de páginas em seu aplicativo rails, apenas remova o Rack :: Cache no arquivo config / application.rb:

require 'rack/cache'

module DemoApp
  class Application < Rails::Application
    config.middleware.delete Rack::Cache
    # ...
  end
end
    
por ilya 31.01.2012 / 20:57
fonte
0

Como solução provisória, o seguinte fez o truque para mim.

Alterei o arquivo config/environments/production.rb para alterar config.assets.compile line de false para true

# Don't fallback to assets pipeline if a precompiled asset is missed
 config.assets.compile = true
    
por Marc M 05.06.2012 / 17:35
fonte
0

Para executar o aplicativo em produção para que você não receba o cache: [GET /] perca Por favor, verifique a pasta {project} / public , se existe alguma pasta de recursos se não, então pré compilar ativos usando               recursos do rake exec: pré-compilação

assim que isso for feito:

defina config.assets.compile para true em production.rb

Em seguida, reinicie o WebApp no ambiente de produção.

Esta abordagem funcionou para mim, espero que funcione para você.

Se você estiver usando o rails 3.2.0, você receberá [GET /], mas seu aplicativo funcionará corretamente.

    
por Mayank Raipure 09.05.2013 / 16:57
fonte