2012-01-31 66 views
5

剛剛從rails 3.0.9升級到3.2.1的應用程序,當我運行bundle exec rake assets:precompile我得到錯誤,這是很好,但回溯並不告訴我在哪裏在我的CSS或SCSS文件的語法問題來自於。我嘗試了「0ee5c0e69c92af0」,但該字符串沒有出現在我的項目中。Rails資產管道更好的錯誤或堆棧跟蹤

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

有沒有辦法從預編譯過程中獲得更好的錯誤消息或堆棧跟蹤?有沒有另外一種方法可以編譯我的css.erb文件來檢查沒有這個任務的語法?

回答

2

沒有更好的方法,我知道,因爲這個消息是由鏈輪(實際上是CSS處理器)將所有文件連接在一起後生成的。

有一兩件事你可以做的(暫時)與本替換application.rb中默認的預編譯數組:

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

然後刪除您application.css任何要求和本地運行的預編譯任務。這將分別編譯每個CSS文件,並希望爲您提供有關問題出現的更多線索。

+0

我能夠到grep周圍的第二部分尋找'巴紐;'而不是這顯然是自動生成的哈希值,並修復問題。我認爲這種方法是可行的,但我希望默認會給出更好的錯誤。 – Schneems 2012-01-31 23:28:23

+0

也許你可以用Sprockets項目提交一個錯誤來爲這樣的錯誤提供更多的上下文? – 2012-02-01 00:13:10

0

當然,通過--trace標誌耙:

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

已經是,見上。 – Schneems 2012-01-31 23:24:38

+0

糟糕,它掉落在文本區域的邊緣。 – 2012-02-01 00:26:37

0

我得到了同樣的錯誤,當我升級到資產的管道,以及,這裏對我來說是罪魁禍首。當您添加資產管道時,將樣式表從使用url(這指向資產管道中的非指紋/非緩存文件)轉換到新的image-url助手(這指向指紋/資產管道中的緩存文件)。請參閱docs中的第2.3節。

預資產管道(.sass):

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

後資產管道(.sass):

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

不幸的是,新的圖像的URL幫手不能在空間處理文件名,而舊的網址可以。所以,當您運行bundle exec rake assets:precompile時,它會變得繁榮。解決辦法是刪除空格。

更正代碼:

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