Me estoy familiarizando con Rails 3.1, y me quemé un tiempo actualizando un proyecto antiguo y tratando de averiguar cómo se comporta la nueva línea de activos en el modo de desarrollo en comparación con la producción.¿Cómo se detectan errores en la cartera de activos de rieles antes de la producción?
El valor predeterminado config.assets.precompile
entorno bendice solamente application.css y application.js, con la intención de que todo debe ser servido como una sola hoja de estilo y un solo archivo javascript.
Es obvio que hay situaciones en las que no queremos que, por lo que podemos añadir elementos a la lista en esa variable config ...
Esta es la situación me encontré con mi proyecto de recinto de seguridad cuando se va a la producción:
- Navegué por el sitio en desarrollo, vi que todo estaba funcionando. Los activos se vincularon como archivos separados y el sitio se visualizó correctamente.
- Subí el sitio a mi servidor y traté de hacerlo funcionar en producción. El primer error fue decir que "ie.css" (una hoja de estilo condicional) no está precompilada. (Yo estaba en Safari y esta hoja de estilo ni siquiera se descargaría: el error se planteó desde el asistente
stylesheet_link_tag
antes de mostrar la página.) - Ran
rake assets:precompile
e intenté de nuevo. - Agregó el elemento ofensivo a
config.assets.precompile
y lo intenté de nuevo. - Pateó el error por la acera hasta que tocó otro error de activo.
- GOTO 3.
Sin saber cómo hacer frente a esto, me dio la vuelta en círculos durante unos minutos hasta que pensé que me dieron todos los activos y el sitio estaba convirtiendo en la producción. Luego lo intenté en MSIE y presioné otro error 500: "belated_png_fix.js" que se estaba cargando de forma condicional, y no apareció hasta entonces.
Así que mi pregunta es, además del método de prueba y error o una gran dependencia de las pruebas de integración, cómo puedo predecir que mi sitio no va a explotar cuando la cartera de activos descubre que no se agregó ninguna hoja de estilo o javascript a la lista de precompilación?
También me llama la atención saber por qué un elemento de la hoja de estilos faltante debería ocasionar que la página entera tenga un error de 500 en lugar de simplemente compilarlo a pedido o servir un 404 cuando se solicita ese activo. ¿Es este un diseño deliberado para "fallar temprano"?
Recientemente convertí una aplicación anterior a la cartera de activos y no tuve problemas. Sin embargo, me llevó un tiempo descubrir cómo funcionaban las cosas juntas. Para responder a su pregunta, ¿puede mostrar los contenidos de sus archivos css y js, específicamente las declaraciones requeridas? También me interesa cómo los está llamando desde la vista. Por último, ¿están todos en aplicación/activos o también estás usando lib/assets y vendor/assets? –