2012-01-31 11 views
5

Acabo de actualizar una aplicación de los rieles 3.0.9 a 3.2.1 y cuando ejecuto bundle exec rake assets:precompile obtengo errores, lo cual está bien, sin embargo, la traza inversa no me dice dónde en mi css o scss archivos del que proviene el problema de sintaxis Intenté greping para "0ee5c0e69c92af0" pero esa cadena no aparece en mi proyecto.Rails Asset Pipeline Better Error o Stack Trace

bundle exec rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
rake aborted! 
Invalid CSS after "...0ee5c0e69c92af0": expected ";", was ".png;" 

¿Hay alguna forma de obtener un mejor mensaje de error o un seguimiento de la pila del proceso de precompilación? ¿Hay alguna otra forma en que pueda compilar mis archivos css.erb para verificar la sintaxis sin esta tarea?

Respuesta

2

No hay una manera mejor que yo sepa, porque este mensaje es generado por Sprockets (en realidad el procesador CSS) después de que ha concatenado todos los archivos.

Una cosa que podría hacer (temporalmente) es reemplazar la matriz de precompilación defecto en application.rb con esto:

config.assets.precompile = ['*.css'] 

elimine cualquier resto requiere de su application.css y ejecute la tarea de precompilación localmente. Esto compilará cada archivo CSS individualmente, y con suerte le dará más pistas sobre dónde está el problema.

+0

que era capaz de grep para la segunda parte en busca de '.png;' en lugar del hash que al parecer es generada automáticamente y solucionar el problema. Creo que este método funcionaría, aunque desearía que el valor predeterminado arrojara mejores errores. – Schneems

+0

¿Quizás podría presentar un error con el proyecto Sprockets para proporcionar más contexto para tales errores? –

0

Claro, pasar el indicador --trace para rastrillar:

$ bundle exec rake --trace assets:precompile 
+0

Ya lo fue, ver arriba. – Schneems

+0

Vaya, se cayó del borde del área de texto. –

0

Tengo este mismo error cuando estaba actualizando a la tubería de activos, así, y aquí fue el culpable para mí. Cuando agrega la canalización de activos, es importante también hacer la transición de las hojas de estilo desde la url (este apunta al archivo sin huellas dactilares/sin memoria caché en la canalización de activos) al nuevo asistente de urls de imágenes (este señala las huellas dactilares/archivo almacenado en caché en la canalización de activos). Ver la Sección 2.3 en el docs.

tubería Pre-activo (.sass):

#background 
    background-image: url('Long Path 1920x1200.jpg') 

tubería Post-activo (.sass):

#background 
    background-image: image-url('Long Path 1920x1200.jpg') 

Desafortunadamente, el nuevo ayudante de imagen-url no puede ocuparse de espacios en una nombre de archivo, mientras que la antigua url podría. Por lo tanto, se disparará cuando ejecute bundle exec rake assets:precompile. La solución es eliminar los espacios.

código corregido:

#background 
    background-image: image-url('long-path-1920x1200.jpg') 
Cuestiones relacionadas