2012-12-09 30 views
3

之前在資產管道中查找丟失的圖像我正在使用Rails 3.2.8進行開發。 一件令人討厭的事情是,如果圖像錯誤地丟失,它會在生產模式下產生錯誤。如何在部署

假設我把下面的代碼。

而實際上我忘記將my.jpg文件在app /資產/圖像,這是確定的發展(瀏覽器會忽略缺失的圖像),但它給出了生產方式的軌道誤差。

如何在部署之前找到丟失的文件?

謝謝。

山姆

回答

1

建設時對部署新版本被設置在我config/environments/test.rb

config.assets.compile = false 
config.assets.digest = true 

這模仿production環境配置的資產管道下面,防止資產被編譯並迫使查找我做什麼通過manifest.yml文件/資產管道。運行你的測試(你有測試,對吧?:-))並注意失敗。

如果你沒有測試,用grep你log/development.log一個500錯誤

tail -f log/development.log | grep 500 

通過幾頁手動去看,出現在尾部新的日誌條目。你應該看看寫測試來自動化這個。


您看到生產中的錯誤的原因是因爲資產管道無法找到您請求的資產並因此引發異常。在開發中,事情更加寬鬆,以便調試信息可以呈現給您,以支持500個錯誤。通過在您的環境中更改上述配置,您可以告訴Rails嚴格遵守其通過資產管道對缺失資產做出的響應,從而讓您在發現問題之前就能夠發現問題。

-1

你可以看在開發模式下運行軌道控制檯...它顯示一個警告,當它找不到圖像。

另外,使用瀏覽器的錯誤控制檯。這兩個人都會告訴你什麼是缺失的,然後你開始尋找或視覺搜索,看看你做了(或沒有)把圖像放在哪裏。

我不知道爲什麼它會令人討厭的是,生產服務器對破損的代碼比對待開發時更不友善,除非您真的想要推出缺少對象和引用的代碼。

+0

這不是最好的想法,因爲有些情況下圖像在開發中可能會顯示正常,這取決於它在樣式表/ DOM中的鏈接/引用方式,但可能無法通過資產管道(或更糟,在部署期間,作者忘記用'rake assets:precompile'重新編譯資產。在這種情況下,您對軌道或瀏覽器控制檯的檢查將失敗(開發過程中不會出現錯誤/警告),但由於資產缺失,500個錯誤仍會投入生產。 – deefour

+0

謝謝你給我打屁股的人。我一直沒有壓倒資產管道,到目前爲止我的控制檯對我來說工作得很好......我沒有考慮使用代碼不會使用管道的情況。 – rwheadon