【发布时间】:2014-12-20 20:02:18
【问题描述】:
我正在尝试使用RAILS_ENV=production 运行 Rails 4 应用程序。
我的目标是预编译资产并使用 CDN 快速提供服务。
到目前为止我做了什么
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...
在 /application.html.slim 中为 .js 和 .css 使用 rails 辅助标签
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= favicon_link_tag 'favicon.png'
我期待什么
在页面加载时,我会看到类似(url 中的预期摘要):
<link data-turbolinks-track="true" href="http://mycdn.cloudfront.net/stylesheets/application-<digest>.css" media="all" rel="stylesheet" />
实际发生的情况
在页面加载时,我看到类似(网址中没有 DIGEST!):
坏消息是它们丢失了,因为 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
【问题讨论】:
标签: ruby-on-rails cdn production precompile