【问题标题】:Rails 4 assets - production env - precompile - CDN - OpsworksRails 4 资产 - 生产环境 - 预编译 - CDN - Opsworks
【发布时间】: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


    【解决方案1】:

    您需要将此添加到您的 production.rb 文件(以及您希望在其中包含摘要的任何其他环境)

       config.assets.digest = true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2013-05-08
      • 2015-10-04
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多