2011-09-26 38 views
16

在rails 3.1中,當您預編譯資產時,rails會創建public/assets目錄並在其中添加文件。您是否在版本控制中添加了公共/資產?

你是版本控制公共/資產/ *嗎?

+1

你覺得你的問題得到了答案嗎?如果是這樣,請接受,否則評論你錯過了什麼會有幫助。 – Travis

回答

5

我也在尋找答案。我發現官方的Rails指南對此有一些想法:

http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation

這裏是相關部門的報價(強調):

有幾個原因,您可能想預編譯資產在本地。其中包括:

  • 您可能沒有寫入生產文件系統的權限。
  • 您可能會部署到多臺服務器,並希望避免重複工作。
  • 您可能正在進行不包含資產更改的頻繁部署。

本地編譯允許您將編譯的文件提交到源代碼管理,並正常部署。

有三個注意事項:

  • 你不能運行預編譯的資產Capistrano的部署任務。
  • 您必須確保開發系統上有任何必需的壓縮機或縮小器。
  • 您必須更改下面的應用配置設置:

config/environments/development.rb,請將下面一行:

config.assets.prefix = "/dev-assets" 

prefix變化使得鏈輪使用不同的網址,在開發模式服務資產,將所有請求傳遞給Sprockets。生產環境中的前綴仍設置爲/assets。如果沒有這種更改,應用程序將爲開發中的/assets提供預編譯資產,並且在再次編譯資產之前,您不會看到任何本地更改。

實際上,這將允許您在本地進行預編譯,將這些文件放在工作樹中,並在需要時將這些文件提交到源代碼管理。開發模式將按預期工作。

因此,將預編譯資產置於VCS中似乎是個好主意。

12

我使用Capistrano進行部署。最後一步是編譯資產。沒有那樣的東西被檢入版本控制。

https://github.com/capistrano/capistrano/wiki/Documentation-v2.x

編譯資產,.gz文件解/等檢查,只會擾亂版本控制。

+0

在我的Amazon EC2微型實例上,需要花費10分鐘才能運行'rake assets:precompile'。所以部署至少需要10分鐘。在我的開發箱上,不到一分鐘。考慮到這一點,你認爲版本控制編譯資產是否合理? –

+0

在[Railscast第#341集](http://railscasts.com/episodes/341-asset-pipeline-in-production)結尾處,Ryan Bates提到了在本地機器上編譯資產然後修改capistrano部署任務以將文件rsync同步到生產服務器;即不把它們放在版本控制中。聽起來不錯。 –

+1

提醒一下:編譯資產後,您的開發環境可能會選擇直接提供這些資源,而不是根據需要生成它們。對我來說,一個快速解決方案是在完成上述cap資產:預編譯和rsync任務後刪除'/ public/assets'。 –

相關問題