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.
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
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. –