2011-10-04 22 views
9

Acabo de empezar a adaptar a rails 3.1, comencé a escribir coffeescript y sass y todo funciona bien en el desarrollo. Cuando ejecuto el servidor de producción, solo me dan:Rails 3.1 activos no tiene huella digital en la producción

<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" /> 
    <script src="/javascripts/application.js" type="text/javascript"></script> 

en el código fuente de la página, no hay código hash generado y ambos activos tiene errores de enrutamiento:

Routing Error 
No route matches [GET] "/stylesheets/application.css" 

¿Cuál es la causa de esta ? ¿Olvidé hacer algo?

configuración en entornos/production.rb:

# Settings specified here will take precedence over those in config/application.rb 

    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = false 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 



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

    # Generate digests for assets URLs 
    config.assets.digest = true 

    config.active_support.deprecation = :notify 

Muchas gracias.

Añadir más información:

en los diseños/application.html.erb, estoy usando el siguiente para incluir los activos:

<%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 

Y he tratado bundle exec rake assets:precompile que corre sin salida cualquier cosa y luego ejecutar rails s -e production, el problema persiste.

Y también intenté configurar config.assets.compile = true y luego ejecutar rails s -e production, el problema persiste.

Por favor ayuda.

Más información. He visto que los js compilados y css se generan en la carpeta public/assets, pero en el entorno de producción, los archivos se incluyen sin el código hash.

Ayuda.

Solución: Acaba de comprobar de nuevo mi proyecto, y se encontró que la causa fundamental es cuando estaba editando application.rb para el apoyo de MongoDB. Me comentó accidentalmente

require "sprockets/railtie" 

descomentarlo, entonces todo está bien.

Deje esto para que otros recuerden mi error de novato.

Muchas gracias Richard. Su respuesta no es definitiva, pero ayuda mucho, realmente merece un voto positivo.

Respuesta

3

Compruebe que ha recibido la tubería activado en application.rb:

config.assets.enabled = true

¿Está utilizando los métodos auxiliares correctos para escribir las etiquetas? Los métodos de ayuda no deberían tener/styleheets y/javascript en la ruta. Como esto (erb interior):

 
javascript_include_tag "application" 
stylesheet_link_tag "application" 

También tendrá que ejecutar la tarea de precompilación como parte de la processs despliegue para crear los archivos, ya que ha establecido a compilar falsa.

El asset pipeline guide muestra cómo configurar esto con capistrano.

+0

Gracias Richard, he agregado la información adicional en la publicación principal. ¿Debo usar capistrano para obtener esta característica? Solo estoy tratando de ejecutar "rails s -e production" en mi local. – larryzhao

+0

Si eres local, entonces tienes que ejecutarlo localmente. Solo necesita la tarea de Capistrano si así es como se implementa en un entorno de producción de producción. Actualice su aplicación a 3.1.1.rc2 y vuelva a ejecutar la tarea. Creo que hay algunas correcciones en la tarea de precompilación que pueden solucionar esto. –

Cuestiones relacionadas