2014-12-20 167 views
0

我試圖獲得一個運行於RAILS_ENV=production的Rails 4應用程序。 我的目標是預先編譯資產並使用CDN快速提供服務。Rails 4資產 - 生產環境 - 預編譯 - CDN - Opsworks

我迄今所做

production.rb 
    config.serve_static_assets = false 
    config.action_controller.asset_host = "http://mycdn.cloudfront.net" 
    config.assets.js_compressor = :uglifier 
    config.assets.compile = false 

是opsworks期間正常運行預編譯步驟部署

"/usr/local/bin/bundle exec rake assets:precompile" 

輸出預編譯

/srv/www/myapp/current/public/assets/$ ls 
application-<digest>.css 
application-<digest>.js 
... other images, etc... 

使用Rails進行的.js和.css幫手標籤/application.html.slim

= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true 
= javascript_include_tag 'application', 'data-turbolinks-track' => true 
= favicon_link_tag 'favicon.png' 

我是怎麼想到

在頁面加載我想看到的東西像(預期摘要在網址):

<link data-turbolinks-track="true" href="http://mycdn.cloudfront.net/stylesheets/application-<digest>.css" media="all" rel="stylesheet" /> 

實際發生的

在頁面加載時,我看到諸如此類(NO DIGEST in url!):
壞消息是它們缺失,因爲application.css不存在於我的應用程序的任何位置,CDN無法自然緩存它。

<link data-turbolinks-track="true" href="http://mycdn.cloudfront.net/stylesheets/application.css" media="all" rel="stylesheet" /> 

任何幫助將不勝感激。

隨機統計:
- 的Rails 4.1.5
- 獨角獸4.8.1
- Opswork堆棧我的部署目標
- 作爲的Cloudfront CDN我

回答

0

你需要把它添加到您的生產。 rb文件(以及任何其他想要在其中進行摘要的環境)

config.assets.digest = true