Rails 3 и конвейер активов в режиме разработки / производства - PullRequest
1 голос
/ 18 февраля 2012

Прекомпиляция ресурсов на рабочем сервере выполняется очень медленно.Поэтому я решил перекомпилировать их на компьютере разработчика и загрузить ресурсы в Amazon S3 по jammit.Все сделано, но у меня есть некоторые негативные проблемы:

  1. Я должен включить каталог public/assets в git control.Потому что, если каталог public/assets пуст на рабочем сервере, произойдет сбой
  2. Если я прекомпилирую ресурсы на компьютере разработчика, application.js включит в HTML сжатый код и, таким образом, скопировал js-код.Изменение js не дает никакого эффекта, потому что прекомпилированный application.js прерывает этот код.

Таким образом, мой процесс разработки включает следующие шаги:

  1. Удаление предварительно скомпилированных ресурсов, если я 'я собираюсь изменить js или css
  2. внести некоторые изменения
  3. прекомпилировать ресурсы
  4. загрузить ресурсы в S3 с помощью jammit-s3
  5. сделать коммит и отправить мои изменениявключая ресурсы на git-сервер
  6. Развертывание с помощью capistrano

Мои вопросы:

  1. Можно ли настроить среду разработки, не включая сжатые application.js если он у меня в каталоге public/assets?
  2. Можно ли настроить производственную среду для работы с пустым каталогом public/assets?Активы будут только на сервере S3.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

По первому вопросу я не знаю постоянного решения, кроме работы:

bundle exec rake assets:clean

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

В production.rb есть вариант для вашего второго вопроса:

# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "http://assets.example.com"

Затем он должен игнорировать каталог ресурсов, поскольку он опирается на удаленный хост.Надеюсь, это поможет.

1 голос
/ 23 февраля 2012

Я решил эту проблему, включив в каталог gitignore assets dir и исключив только один файл - public/assets/manifest.yml, и рабочий сервер теперь работает правильно, то есть config.action_controller.asset_host = "http://assets.example.com" работает.Требуется только manifest.yml файл

...