Rails 3 & Assets Pipeline в режиме разработки/производства
-
27-10-2019 - |
Вопрос
Предварительные активы на производственном сервере очень медленные. Поэтому я решил перекомпилировать их на машину разработки и загрузить активы на Amazon S3 jammit
. Анкет Все сделано, но у меня есть негативные проблемы:
- Я должен включить
public/assets
каталог наgit
контроль. Потому что, еслиpublic/assets
каталог пуст на сбое на производственном сервере - Если я предварительно совершаю активы на машине разработки
application.js
Включает в HTML как сжатый, и таким образом я дублировал код JS. Изменение JS не оказывает никакого эффекта, потому что предварительно скомпилированныйapplication.js
прерывает этот код.
Таким образом, мой процесс разработки включает следующие шаги:
- Удалить предварительные активы, если я собираюсь изменить JS или CSS
- Сделайте некоторые изменения
- Активы с недостаточностью
- Загрузить активы в S3
jammit-s3
- Совершать и выдвинуть мои изменения, включая активы на сервер GIT
- Развернуть от Capistrano
Мои вопросы:
- Возможно ли настройка среды разработки, не включайте сжатую
application.js
Если у меня есть это вpublic/assets
каталог? - Можно ли настроить производственную среду для работы с пустым
public/assets
каталог? Активы будут только на сервере S3.
Решение 2
Я решил эту проблему, включив Acsets Dir в Gitignore и исключая только один файл - public/assets/manifest.yml
и производственный сервер работает правильно сейчас, т.е. config.action_controller.asset_host = "http://assets.example.com"
работает. Это требует только manifest.yml
файл
Другие советы
Для первого вопроса я не знаю постоянного решения, кроме бега:
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"
Затем он должен игнорировать ваш каталог активов, поскольку он полагается на удаленный хост. Надеюсь, это поможет.