Путаница в отношении рейк-активов: очистка/очистка на трубопроводе активов в рельсах
Может ли кто-нибудь объяснить мне, что действительно делает команда rake assets:clean
? К сожалению, Rails Guides не упоминают об этом. Существует также команда rake assets:cleanup
. В чем разница?
Кроме того, кто-нибудь скажет мне, когда мне нужно запустить rake assets:precompile
в процессе производства. Запустить его на консоли сервера после того, как я развернул все свои файлы приложений на моем рабочем сервере? Или я precompile
на моей локальной машине, а затем выполняю развертывание всех файлов?
Спасибо всем
Ответы
Ответ 1
Примечание. Этот ответ относится к рельсам 3. Для рельсов 4 и более поздних см. Здесь другие ответы.
Если вы прекомпилируете на своем локальном компьютере, вы можете передать эти сгенерированные активы в репозиторий и продолжить развертывание. Нет необходимости компилировать их на производственную машину.
Но это создает проблему: теперь, когда вы меняете исходные файлы (coffescript/scss), приложение не будет получать изменения, потому что вместо этого оно будет обслуживать предварительно скомпилированные файлы. rake assets:clean
удаляет эти предварительно скомпилированные файлы.
В моих проектах активы предварительно скомпилированы как часть развертывания. Capistrano делает это очень легко.
Кроме того, я никогда не слышал о rake assets:cleanup
.
Ответ 2
Запустите rake assets:clobber
, чтобы фактически очистить активы.
http://www.dixis.com/?p=735
Ответ 3
Ответ Sergio был полностью прав в Rails 3. rake assets:clean
удалил все активы, которые предварительно были предварительно скомпилированы в каталог public/assets
.
В Rails 4 вы запустите rake assets:clobber
, чтобы сделать то же самое.
Если вы запустите rake assets:precompile
со следующей конфигурацией (по умолчанию включен в стадии постановки и производства):
# config/environments/production.rb
config.assets.digest = true
Скомпилированные активы скомпилированы. Это означает, что вы можете скомпилировать свои новые активы, оставив старые активы на месте. Обычно вы хотите сделать это на производстве, чтобы веб-сайт по-прежнему обращался к старым файлам, а ваш запуск precompile
создавал ваши новые файлы (потому что вы добавили новый css/javascript). Теперь вы хотите избавиться от старых файлов, которые больше не используются. clean
он удаляет старые версии предварительно скомпилированных активов, оставляя новые активы на месте.
Ответ 4
rake assets:clean
удаляет скомпилированные активы. Он запускается cap deploy:assets:clean
для удаления скомпилированных активов, как правило, с удаленного сервера.
cap deploy:clean
удаляет старые версии, обычно с удаленного сервера. Это не rake assets:clean
rake!= cap
Ответ 5
rake assets:clean
теперь выполняется cap deploy:cleanup_assets
. Добавьте require 'capistrano/rails/assets'
в свой Capfile, и вы получите эту задачу. Моя версия capistrano v3.2.1.
Ответ 6
очистите эти невоспроизводимые файлы git clean -f
для файлов и git clean -f -d
для каталогов