Путаница с активами рейка: очистка / очистка конвейера активов в рельсах - PullRequest
55 голосов
/ 18 февраля 2012

Может ли кто-нибудь объяснить мне, что на самом деле делает команда rake assets:clean? К сожалению, Rails Guides не упоминают об этом. Также есть команда rake assets:cleanup. Какая разница?

Кроме того, кто-нибудь может сказать мне, когда мне нужно запустить rake assets:precompile в производстве. Запускаю ли я его на консоли сервера после того, как развернул все свои файлы приложений на своем производственном сервере? Или я precompile на моей локальной машине, а затем выполнить развертывание всех файлов?

Спасибо всем

Ответы [ 6 ]

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

Примечание. Этот ответ относится только к рельсам 3.Для rails 4 и выше смотрите другие ответы здесь.

Если вы прекомпилируете на локальном компьютере, вы можете зафиксировать эти сгенерированные ресурсы в репозитории и продолжить развертывание.Нет необходимости компилировать их на рабочем компьютере.

Но это создает проблему: теперь, когда вы изменяете исходные файлы (coffescript / scss), приложение не будет воспринимать эти изменения, поскольку вместо этого оно будет обслуживать предварительно скомпилированные файлы,rake assets:clean удаляет эти предварительно скомпилированные файлы.

В моих проектах ресурсы предварительно скомпилированы как часть развертывания.Capistrano делает это очень легко.

Кроме того, я никогда не слышал о rake assets:cleanup.

51 голосов
/ 07 октября 2014

Запустите rake assets:clobber, чтобы фактически очистить активы.http://www.dixis.com/?p=735

24 голосов
/ 20 августа 2015

Ответ Серхио был полностью правильным в 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 удаляет старые версии предварительно скомпилированных ресурсов, оставляя новые активы на месте.

7 голосов
/ 07 июня 2013

rake assets:clean удаляет скомпилированные активы.Он запускается cap deploy:assets:clean для удаления скомпилированных ресурсов, как правило, с удаленного сервера.

cap deploy:clean удаляет старые версии, как правило, с удаленного сервера.Это не rake assets:clean

грабли! = Шапка

1 голос
/ 31 мая 2014

rake assets:clean теперь управляется cap deploy:cleanup_assets.Добавьте require 'capistrano/rails/assets' в ваш Capfile, и вы получите эту задачу.Моя версия capistrano v3.2.1.

0 голосов
/ 30 мая 2016

очистите эти неотслеживаемые файлы с помощью git clean -f для файлов и git clean -f -d для каталогов

...