我剛剛熟悉Rails 3.1,並且我花了一些時間更新舊項目,並試圖弄清新資產流水線在開發模式和生產模式下的表現。在生產之前如何捕捉鋼軌資產管道中的錯誤?
默認config.assets.precompile
設置祝福僅application.css和的application.js,意圖使一切應該擔任一個樣式表和一個JavaScript文件。
顯然,有情況時,我們不希望出現這種情況,所以我們可以將項目添加到該配置變量列表...
這是我遇到了我的沙盒項目將生產時的情況:
- 在開發中瀏覽網站,看到一切正常。資產被鏈接爲單獨的文件,並且該網站正確顯示。
- 上傳該網站到我的服務器,並試圖讓它在生產中工作。第一個錯誤是說「ie.css」(一個條件樣式表)沒有預編譯。 (我在Safari中,這個樣式表甚至不會被下載:在渲染頁面之前,這個錯誤是由
stylesheet_link_tag
助手引發的。) - Ran
rake assets:precompile
並重試。 - 將犯罪項目添加到
config.assets.precompile
並再次嘗試。 - 將路徑中的錯誤消除,直到遇到另一個資產錯誤。
- GOTO 3.
不知道如何解決這個問題,我幾次去兜圈子,直到我以爲我得到了所有的資產和網站在生產中進行渲染。然後我在MSIE中試了一下,並且遇到另一個錯誤500:「belated_png_fix.js」正在有條件加載,直到那時纔出現。
所以我的問題是,除了試驗和錯誤或嚴重依賴集成測試,我怎麼能預測,當資產管道發現某些樣式表或JavaScript沒有添加時,我的網站不會彈出到預編譯列表?
我也很好奇,爲什麼一個缺失的樣式表資產應該導致整個頁面出錯500,而不是僅僅按需編譯它,或者在請求資源時提供404。這是故意設計的「早期失敗」嗎?
我最近將一箇舊應用程序轉換爲資產管道,並沒有任何問題。我花了一段時間才弄清楚一切如何一起工作。要回答你的問題,你能顯示你的css和js文件的內容,特別是require語句嗎?我也很感興趣的是你如何從視圖中調用這些。最後,他們都在應用程序/資產或您是否使用庫/資產和供應商/資產? –