Использование S3 / CloudFront с активами Rails 3 и менее CSS - PullRequest
3 голосов
/ 01 марта 2011

Это глоток!По сути, я пытаюсь отправить все свои ресурсы Rails 3 в облако S3 и использовать CloudFront в качестве CDN для доставки всего этого.Я уже узнал о настройке Rails для извлечения с сервера ресурсов в рабочем режиме.Проблема, с которой я сталкиваюсь, состоит в том, чтобы найти хороший способ автоматически упаковать и отправить все в облако из команды rake или гема rails.Другая проблема, с которой я столкнулся, это то, что я не знаю, собирается ли использование Less CSS с гемом More это испортить.More генерирует файл CSS из другого каталога и помещает его в публичные / таблицы стилей.Любые идеи или предложения очень ценятся!Спасибо:)

1 Ответ

3 голосов
/ 06 января 2012

Если вы нажимаете на Heroku и используете ресурсы Rails 3.1, у вас все настроено.

В конфигурации CloudFront на amazon создайте свой дистрибутив и задайте источник для URL своих приложений.

Затем в файле production.rb добавьте:

config.action_controller.asset_host = "xxxxxxxxx.cloudfront.net"

Хостявляется хостом вашего дистрибутива CloudFront.

Затем при развертывании убедитесь, что вы находитесь в стеке Cedar и что ресурсы компилируются.Это добавит уникальный MD5 в имена файлов.Когда в ваш CDN поступает запрос (автоматически обрабатывается настройкой в ​​файле production.rb), CDN либо подает свою версию файла, либо сначала извлекает ее из источника.Это означает, что вам не нужно загружать файлы в CDN, они загружаются автоматически.

Если у вас есть файл, который по какой-то причине не имеет уникального имени, вам нужно будет посмотретьо том, как сделать недействительным кеш в CloudFront, но в остальном это довольно просто.

...