2016-01-21 3 views
0

Предварительные компиляции активов на серверах занимали много времени с помощью приложения Rails 4.0.0, и иногда процесс был убит, поэтому я переключился на его локальное использование, запустил его и выгрузил на серверы вместо.Конвейер ресурсов Rails обслуживает старые манифесты

Это решение проблемы скорости. Но Im работает в другой проблеме, когда последние активы, которые были загружены на сервер, не обслуживаются моими серверами Rails, даже если они были повторно перезапущены.

Чтобы проиллюстрировать это, версия application.css, которая обслуживается в настоящее время с помощью нашего приложения в производстве является application-dc02e058cd956b2492c840315ccbff7f.css

манифеста файлы, доступные на сервере, -

[email protected]:/mnt/snapshot-production/current/public/assets$ ls -lt manifest-* 
-rw-rw-r-- 1 app app 203032 Jan 17 05:32 manifest-3365253428e645b923e834b54fb530ea.json 
-rw-rw-r-- 1 app app 203032 Jan 6 17:02 manifest-44c2495f77ae0b10489563653d482136.json 
-rw-rw-r-- 1 app app 203032 Dec 30 08:53 manifest-bbe38eefd3a3671b8d1d7bf524307413.json 
-rw-rw-r-- 1 app app 203212 Dec 30 08:36 manifest-7fde3fe5c6247d724bf36a7aa9baee53.json 

Если я пытаюсь найти какие манифесты обратитесь к поданной в настоящее время application.css, я получаю следующее:

[email protected]:/mnt/snapshot-production/current/public/assets$ grep -rl application-dc02e058cd956b2492c840315ccbff7f.css manifest-*.json             
manifest-44c2495f77ae0b10489563653d482136.json 
manifest-7fde3fe5c6247d724bf36a7aa9baee53.json 
manifest-bbe38eefd3a3671b8d1d7bf524307413.json 

Как вы можете видеть, оно обслуживается из 3 старых версий файлов манифеста, которые у меня есть.

Если я пытаюсь найти какую версию application.css в настоящее время подается с моего последнего файла манифеста (17 января) - manifest-3365253428e645b923e834b54fb530ea.json -

[email protected]:/mnt/snapshot-production/current/public/assets$ grep -Po application*.css manifest-3365253428e645b923e834b54fb530ea.json 
manifest-3365253428e645b923e834b54fb530ea.json:application-58eb91ccbe7698274d351e16b9b281aa.css 
manifest-3365253428e645b923e834b54fb530ea.json:application-58eb91ccbe7698274d351e16b9b281aa.css 

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

Но одно замечание, которое я заметил, но не имеет объяснений, иногда он отлично работает. Последняя версия обслуживается после определенных развертываний.

Что-то не так?

ответ

0

Вы должны никогда имеют более одного файла манифеста в вашем каталоге ресурсов. Это твоя проблема.

Rails (на самом деле Sprockets) выбирает первый файл манифеста, который он находит (source). Это может быть ново, оно может быть старым; нет гарантии. В манифесте используется имя файла completely random. Единственный способ гарантировать правильный манифест - использовать только один файл манифеста.

Начните с загрузки манифеста, который использует ваш сервер, запустите assets:precompile, чтобы обновить его, а затем повторно загрузить. В противном случае вы будете создавать новый манифест каждый раз, когда вы прекомпилируете, что приведет к этим проблемам.

+0

Ahh !! Понимаю. Спасибо Мэтт. И спасибо за отзыв о загрузке активов. Это блестящая идея. Никогда не думал об этом. Благодарю. –

Смежные вопросы