3

這是一口!基本上,我試圖將我所有的Rails 3資產發送到S3 Cloud,並使用CloudFront作爲CDN來提供。我已經瞭解瞭如何將Rails配置爲以生產模式從資產服務器中提取。我遇到的問題是找到一個很好的方法來自動地打包並從rake命令或rails gem將所有內容發送到雲端。我有的另一個問題是我不知道如果使用更少的CSS與更多的寶石是要搞砸了。更多從另一個目錄生成一個CSS文件並將其放置在公共/樣式表中。任何想法或建議都非常感謝!謝謝:)使用S3/CloudFront與Rails 3資產和更少的CSS

+0

你如何將你的代碼部署到生產中? – 2011-03-01 20:33:40

+0

@Jesse我正在做一個git push heroku master。我的計劃是運行rake任務將所有靜態公共資源上載到雲,然後將我的資產服務器更改爲我的雲端URL。 – 2011-03-02 23:01:45

回答

3

如果你推動Heroku,並使用Rails 3.1資產,你都設置。

在Amazon的CloudFront配置中創建您的發行版並將源設置爲您的應用程序URL。

然後在你的production.rb文件中加入:

config.action_controller.asset_host = "xxxxxxxxx.cloudfront.net" 

主持人是你的CloudFront的分佈的主機。

然後,當您部署確保您在Cedar堆棧上並且正在編譯資產。這將在文件名中添加一個唯一的MD5。當向CDN發出請求(由production.rb文件中的設置自動處理)時,CDN將提供它的文件版本或首先從原始文件中提取它。這意味着您不必將文件推送到CDN,它們會自動進入。

如果您的文件由於某種原因而沒有唯一的名稱,那麼您需要了解如何使CloudFront中的緩存失效,但除此之外它非常容易。

+0

甜!我不知道CloudFront會這樣做。我的印象是,我不得不編譯資產並將其作爲CI流程的一部分上傳。謝謝! – 2012-02-08 16:35:39

+0

這隻適用於Rails 3.1或更高版本。如果您的版本較低,則可能需要進入CloudFront中的緩存中的數據並使其無效(不確定如何操作,但我認爲您可以)。使用Rails 3.1資產時,它包含文件名中的MD5校驗和,使每個構建都是唯一的。 – 2012-02-09 14:55:59