2012-01-31 10 views
9

No puedo probar mi sitio web en modo de producción con WebRick, ya que está provocando errores de caché. En los modos de desarrollo y prueba, todo funciona a la perfección.¿Por qué obtengo "caché: [GET /] señorita" en producción usando WebRick?

he puesto esta opción en config/ambientes/production.rb:

config.serve_static_assets = true 

Y entonces me encontré:

bundle exec rake assets:precompile 

Ahora poner en marcha el 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 

Y cuando voy al http://localhost:3000 obtengo "Lo sentimos, pero algo salió mal". En el terminal esto es lo que produce:

cache: [GET /] miss 

Estoy parado aquí. No tengo ni idea de qué hacer.

+0

¿Ha cambiado el 'config.cache_store' en application.rb? – Baldrick

+0

No, la aplicación es nueva, no he tocado ese archivo. –

+0

Ok. ¿Hay un error en 'production.log'? – Baldrick

Respuesta

5

El problema es con la tubería de activos, que tiene que estar bien configurado en modo de producción, ya que los archivos no se precompilan automáticamente.

En mi caso, estaba insertando un archivo javascript (con javascript_include_tag) que solo estaba presente en una página, por lo que no estaba incluido en el manifiesto de application.js.

En ese caso, el inventario de activos no está precompilando el archivo al ejecutar assets:precompile.

Con el fin de incluir el archivo que falta, tenemos que editar config/environments/production.rb y añadir esta línea:

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

Usted se dará cuenta que esta línea ya existe, pero es comentado. Lee el comentario para obtener más aclaraciones. Para obtener más información, consulte official asset pipeline guide.

0

Este mensaje sobre páginas faltantes envía el middleware Rack :: Cache. Si usted no necesita usar la página que deposita en su aplicación rieles, simplemente quitar el estante :: Cache en el archivo config/application.rb:

require 'rack/cache' 

module DemoApp 
    class Application < Rails::Application 
    config.middleware.delete Rack::Cache 
    # ... 
    end 
end 
+1

No fui el votante, pero decirle al OP que no use una función no resuelve su problema. – Basic

+0

@Basic Thx, entiendo mi error – ilya

0

Como solución provisional, el siguiente paso fue el truco para mí.

me cambió el archivo config/environments/production.rb cambiar config.assets.compile línea de false a true

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 
0

Para ejecutar la aplicación en la producción por lo que no consigue caché: [GET /] perderse favor Compruébele {proyecto}/carpetas públicas, es existe la carpeta de cualquier activos si no, entonces pre compilar activos utilizando activos rastrillo ejecutivo de paquete: precompilación

Una vez hecho esto:

conjunto config.assets.compile a cierto en la producción.rb

A continuación, reinicie WebApp en el entorno de producción.

Este enfoque funcionó para mí espero que funcione para usted.

Si está utilizando rails 3.2.0 obtendrá [GET /], pero su aplicación funcionará correctamente.

Cuestiones relacionadas