2012-07-22 20 views
13

每次我部署我的Rails 3.2項目的Heroku,rake assets:precompile運行:是否有可能跳過Heroku上單個git push的資產預編譯步驟?

$ git push heroku master 
... 
----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
     Asset precompilation completed (189.17s) 
... 

有時候我想打一推,我知道不會改變任何資產,如快速修復到控制器。是否有可能跳過資源:預編譯單個git推到Heroku的步驟?

謝謝。

回答

14

當然!您需要在your_app/pubilc/assets目錄中創建一個manifest.yml

該文件可以是空白的。但理想情況下,您在本地預編譯所有內容,因此部署到Heroku的速度會更快。

確保您在推送到Heroku時還承諾了manifest.yml文件。像git add -f your_app/pubilc/assets/manifest.ymlgit push heroku master就足夠了。

+0

如果我仍然希望資產能夠在Heroku上進行多次編譯,這個解決方案意味着我必須對manifest.yml文件進行一次簽入,然後推送到heroku,然後確保刪除該文件。對?有沒有什麼辦法可以避免這個額外的步驟? – Eli 2012-07-22 06:38:53

+2

如果您在部署到Heroku時仔細觀察,則會有一行表示「檢測到manifest.yml」。假設資產在本地編譯。所以基本上清單文件是告訴Heroku不要執行資產編譯的信號。我想你總是可以在控制檯上手動運行'heroku run rake assets:precompile'。 – 2012-07-22 06:53:23

+5

從您的控制檯運行'heroku run rake assets:precompile'將**不會爲您正在運行的Heroku dyno預先編譯資產。在Heroku上運行的每個進程都運行在不同的虛擬環境中。 – 2013-11-05 22:14:22

0

在軌道4,只是預編譯創建本地文件manifest-<md5 hash>.json而不是manifest.yml

0

rake assets: precompile,在產生的資產都在public/assets檢查,並推到Heroku的。

這會自動在您的public/assets目錄中創建manifest-.yml或json文件;然後heroku會檢測到並報告Detected manifest file, assuming assets were compiled locally

注意1:有些人在development.rb中有一行,這使得這些行到public/dev-assets instead;如果是這樣,則需要重命名dev-assets只是assets

注2:請確保您的.gitignore文件不排除public/assets目錄。