2012-01-31 8 views
5

Po prostu zaktualizowałem aplikację z szyn 3.0.9 do 3.2.1 i gdy uruchomię bundle exec rake assets:precompile Pojawiają się błędy, co jest dobre, jednak śledzenie nie mówi mi gdzie w moim css lub scss pliki, z których pochodzi problem z składnią. Próbowałem greping dla "0ee5c0e69c92af0", ale ten ciąg nie pojawia się w moim projekcie.Rails Asset Pipeline Lepszy błąd lub śledzenie stosu

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;" 

Czy istnieje sposób na uzyskanie lepszego komunikatu o błędzie lub śledzenia stosu z procesu prekompilacji? Czy istnieje inny sposób mogę skompilować moje pliki css.erb, aby sprawdzić składnię bez tego zadania?

Odpowiedz

2

Nie ma lepszego sposobu, który znam, ponieważ ten komunikat jest generowany przez Sprockets (w rzeczywistości procesor CSS) po połączeniu wszystkich plików razem.

Jedno można zrobić (tymczasowo) jest wymienić tablicę domyślny prekompilacji w environment.rb z tym:

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

następnie wyjmij wymaga od application.css i uruchomić zadanie prekompilacji lokalnie. Spowoduje to kompilację każdego pliku CSS z osobna i mam nadzieję, że dostarczy więcej wskazówek na temat tego, gdzie jest problem.

+0

byłem w stanie grep wokół do drugiej części szuka '.png;' zamiast hash, który jest najwyraźniej generowane automatycznie i rozwiązać problem. Myślę, że ta metoda zadziałałaby, chociaż wolałabym, żeby domyślne błędy dawały lepsze błędy. – Schneems

+0

Być może mógłbyś zgłosić błąd w projekcie Sprockets, aby podać więcej kontekstu dla takich błędów? –

0

Jasne, przekaż flagę --trace prowizji:

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

Już było, patrz wyżej. – Schneems

+0

Ups, spadł z krawędzi obszaru tekstowego. –

0

Mam ten sam błąd, kiedy modernizacji rurociągu aktywów, jak również i tutaj był winowajcą dla mnie. Gdy dodajesz potok zasobów, ważne jest, aby również przenieść arkusze stylów z adresu URL (ten wskazuje na plik bez odcisków palców lub plik z pamięci podręcznej w potoku zasobów) do nowego pomocnika obrazu-url (ten wskazuje na odcisków palców/plik buforowany w potoku zasobów). Zobacz rozdział 2.3 w docs.

Pre-aktywami rurociąg (.sass):

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

rurociąg po aktywów (.sass):

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

Niestety, nowy image-url pomocnika nie może poradzić sobie ze spacjami w A nazwa pliku, podczas gdy stary adres URL mógłby. Tak więc, będzie się rozwijać, gdy uruchomisz bundle exec rake assets:precompile. Rozwiązaniem jest usunięcie przestrzeni.

Poprawiono kod:

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