2012-01-31 12 views
5

Appena aggiornato un'app dai binari 3.0.9 a 3.2.1 e quando corro bundle exec rake assets:precompile Ottengo errori, il che va bene tuttavia il backtrace non mi dice dove nel mio css o scss file dal quale proviene il problema della sintassi. Ho provato a greping per "0ee5c0e69c92af0" ma quella stringa non appare nel mio progetto.Rails Asset Pipeline Migliore errore 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;" 

C'è un modo per ottenere un messaggio di errore migliore o una traccia di stack dal processo di precompilazione? C'è un altro modo in cui posso compilare i miei file css.erb per verificare la sintassi senza questa attività?

risposta

2

Non c'è un modo migliore che io conosca, perché questo messaggio è generato da Pignoni (in realtà il processore CSS) dopo aver concatenato tutti i file insieme.

Una cosa che si potrebbe fare (temporaneamente) è sostituire l'array predefinito precompilare in application.rb con questo:

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

quindi rimuovere la richiede dal vostro application.css ed eseguire il compito precompilare localmente. Questo compilerà ogni file CSS individualmente e, si spera, ti darà più indizi su dove si trovi il problema.

+0

sono stato in grado di grep giro per la seconda parte alla ricerca di '.png;' piuttosto che l'hash che è apparentemente generato automaticamente, e risolvere il problema. Penso che questo metodo funzionerebbe, anche se mi auguro che l'impostazione predefinita dia migliori errori. – Schneems

+0

forse potresti inserire un bug nel progetto Sprockets per fornire più contesto per tali errori? –

0

Certo, passare il flag --trace di incamerare:

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

Già era, vedi sopra. – Schneems

+0

Oops, è caduto dal bordo dell'area di testo. –

0

Ho ottenuto questo stesso errore quando stavo aggiornando alla pipeline bene come bene, e qui è stato il colpevole per me. Quando si aggiunge la pipeline di asset, è importante anche che i fogli di stile vengano trasferiti dall'URL (che punta al file non fingerprint/non memorizzato nella pipeline degli asset) al nuovo helper image-url (questo punta al fingerprint/file memorizzato nella pipeline degli asset). Vedere la sezione 2.3 in docs.

Pre-asset pipeline (.sass):

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

post-asset pipeline (.sass):

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

Purtroppo, il nuovo aiutante immagine-url non può trattare con gli spazi in un nome del file, mentre il vecchio URL potrebbe. Quindi, andrà boom quando si esegue bundle exec rake assets:precompile. La soluzione è rimuovere gli spazi.

codice corretto:

#background 
    background-image: image-url('long-path-1920x1200.jpg') 
Problemi correlati