El problema en pocas palabras es que en el modo de desarrollo haríamos cambios a los archivos CSS o JS, pero siempre obtendría versiones en caché/antiguas de estos archivos. Nada de lo que hice tuvo ningún efecto. Comprobé la configuración docenas de veces e intenté todas las combinaciones de valores de configuración, pero siempre obtuve los mismos resultados: archivos obsoletos/en caché. De hecho, tuve que ejecutar en modo de producción y reiniciar el servidor después de cada cambio para probar.Carril de activos de Rails 3.1.1 Heroku caching gotcha
Pasé días arreglándome los pelos por este tema, miré docenas de preguntas sobre el flujo de activos en el inventario de activos, pero nunca encontré una que lo abordara, así que pensé en publicarlo aquí para la posteridad.
Usamos Heroku y precompilamos nuestros activos porque Heroku no puede precompilar para nosotros (también usamos el dispositivo que aparentemente es la causa de la falla de precompilación de heroku). Entonces, para llevar nuestros activos precompilados a Heroku, tenemos que registrarlos en Git.
Aquí está el problema.
Cuando actualizamos a Rails 3.1.1 la precompilación de activos produjo archivos con y sin el hash MD5 en el nombre. No pensé mucho de esto y seguí y revisé todos estos archivos para poder presionar a heroku. Algún tiempo después noté el problema con los resultados almacenados en caché en modo de desarrollo. Los activos precompilados y registrados sin los hash MD5 se estaban publicando desde/public/assets como archivos estáticos que nos impedían ver los cambios que estábamos realizando en/app/assets.
Después de finalmente darme cuenta de esto, ejecuté git rm/public/assets y todo funciona nuevamente. Así que la comida para llevar es: ¡Tenga cuidado al consultar activos en git!
Para convertir esto en una pregunta: ¿cómo otros hacen esto? ¿Me estoy perdiendo algo obvio? Lo que realmente me gustaría es que Heroku precompile mis recursos para mí, pero está fallando con un error de conexión de base de datos que creo que se debe al diseño. Esperaba que Rails 3.1.1 arreglara esto pero no fue así.
Dty, había intentado esta configuración exacta antes de publicar esta pregunta, pero no funcionó para mí en ese momento. Sin embargo, lo intenté nuevamente, esta vez con Devise 1.4.9 y he aquí que funciona. Gracias por la sugerencia que me hizo probar esto de nuevo. –
@ JeffCutler-Stamm ¡me alegro de que funcionó! También estoy alojando una aplicación de rieles 3.1.1 en heroku pero aún no he agregado ningún dispositivo (pero lo haré pronto) – Dty
Me gustaría señalar que lo agregaste a config/application.rb –