Rails 3 - автоматическое развертывание ресурсов в Amazon CloudFront? - PullRequest
11 голосов
/ 02 декабря 2011

Есть ли в Rails 3.1 гем или метод, который может автоматически загружать ресурсы в Amazon Cloud Front и использовать их вместо обслуживания локально размещенных? Я думаю, что легко загрузить вручную скомпилированные ресурсы и затем изменить Конфигурация приложения rails для использования этого хоста актива, но при изменении актива выгрузку на фронт в облаке необходимо будет снова выполнить вручную. Есть ли хорошие способы для этого?

Ответы [ 4 ]

13 голосов
/ 07 марта 2012

Определенно проверьте asset_sync на github. Или в нашей статье, посвященной центру разработки Heroku Использование ресурса CDN Host с Rails 3.1 в Heroku .

Существует довольно значительное улучшение производительности при использовании asset_sync по сравнению с пользовательским источником CDN, позволяющим вашему приложению лениво компилировать ресурсы в производственном процессе или обслуживать их, предварительно скомпилированные непосредственно с серверов приложений. Однако я бы сказал это. Я написал это.

  • С помощью asset_sync и S3 вы можете предварительно скомпилировать активы, что означает, что все активы готовы для немедленной передачи на хост / CDN активов
  • Вам может потребоваться только пакет : assets в application.rb при прекомпиляции, что экономит память при работе
  • Ваши серверы приложений НИКОГДА не попадают под запросы активов. Знаете, вы можете тратить много времени на вычисления. Вычислительный.
  • По умолчанию все заголовки кеша HTTP установлены по умолчанию
  • Вы можете включить автоматическое сжатие GZIP с помощью одной дополнительной конфигурации
10 голосов
/ 02 февраля 2012

Если вы используете опцию «Custom origin» в Cloudfronts, вам не нужно ничего загружать, Cloudfront будет извлекать ресурсы с вашего сервера при необходимости. Подробнее о настройке см .:

http://blog.ertesvag.no/post/10720082458

8 голосов
/ 02 декабря 2011

Взгляните на https://github.com/rumblelabs/asset_sync - мы используем его только для S3, но я думаю, что часть CloudFront довольно проста, когда ресурсы находятся на S3.

Это в конечном итоге задача-рейк, которую вы просто добавляете для выполнения в процессе развертывания.

1 голос
/ 02 декабря 2011

другой вариант будет https://github.com/moocode/asset_id,, в файле readme есть пример использования его с облачным фронтом.Он должен работать с рельсами 3.1, но я использовал его только в 3.0.x.

С.С. Джон сказал, что все решения в конечном итоге станут граблями + немного логики для изменения пути активов в рельсах.

...