Я пытаюсь запустить приложение 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