Ресурсы Rails 4 — рабочая среда — предварительная компиляция — CDN — Opsworks

Я пытаюсь запустить приложение Rails 4 с RAILS_ENV=production. Моя цель — предварительно скомпилировать активы и использовать 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...

Использование вспомогательных тегов 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'

Чего я ожидал

При загрузке страницы я увижу такие вещи, как (ожидаемый дайджест в URL):

<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
– Unicorn 4.8.1
– Стек Opswork как моя цель развертывания
– Cloudfront как моя CDN


person mconlin    schedule 20.12.2014    source источник


Ответы (1)


Вам нужно добавить это в свой файл production.rb (и любую другую среду, в которой вы хотите иметь дайджесты)

   config.assets.digest = true
person katzmopolitan    schedule 08.01.2015