生產服務器上的預編譯資產非常緩慢。所以我決定在開發機器上重新編譯它們,並通過jammit
將資源上傳到Amazon S3。一切都這樣做,但我有一些負面問題:開發/生產模式中的Rails 3和資產管道
- 我必須包括
public/assets
目錄git
控制。因爲如果public/assets
生產服務器上的目錄爲空 - 如果我在開發機器上預編譯資產
application.js
包含在HTML中作爲壓縮方式,那樣我就複製了js代碼。由於預編譯的application.js
會中斷此代碼,因此更改js不會產生任何效果。
這樣,我的開發過程,包括以下步驟:
- 刪除預編譯的資產,如果我要去改變JS或CSS
- 做一些改變
- 預編譯資產
- 上傳資產到S3通過
jammit-s3
- 提交併推送我的更改包括資產到git服務器
- 部署由Capistrano的
我的問題是:
- 是否有可能配置開發環境不包括壓縮
application.js
,如果我有它在public/assets
目錄? - 是否可以將生產環境配置爲使用空的
public/assets
目錄?資產只會在S3服務器上。
如果生產模式已經設置了'config.action_controller.asset_host',但是我必須在'public/assets'路徑中預先編譯資源,因爲服務器沒有它們就會失敗 – ka8725 2012-02-18 13:50:05
您可能想嘗試一些不同的設置以及那麼。你可以發佈你的production.rb,因爲很難說出你做了什麼,不知道什麼。 儘量減少Rails對資產的使用,例如: 'config.assets.compile = false' 所以它不會嘗試生成它們。 – tombruijn 2012-02-19 13:03:19
另外,服務器如何失敗?它不註冊遠程asset_host並檢查公共/資產目錄?然後它是從應用程序還是asset_host實際提供它們? – tombruijn 2012-02-19 13:10:00