Capistrano/Rails 3.2.14/Sprockets - не завершается развертывание в продакшене

Я переношу приложение Rails, которое я создал несколько лет назад и долгое время не развертывал его на новый сервер. В то время я использовал capistrano без проблем, и теперь, когда я запускаю cap deploy, я получаю следующий шаг:

  * executing "ls -1 /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest* | wc -l"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 727ms
  * executing "ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 783ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deploy/mywebsite.com/releases/20150812101128; true"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 944ms
failed: "rvm_path=/home/deploy/.rvm /home/deploy/.rvm/bin/rvm-shell 'ruby-2.2.2' -c 'ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*'" on 45.79.142.32

Я читал в нескольких местах о том, что sprockets меняет имя или тип файла манифеста (с .sprockets-manifest на .manifest или что-то в этом роде), но я понятия не имею, как это решить, чтобы это не было хаком. Я не уверен, что это связано с использованием старой версии Rails или что-то в этом роде. Это версии, которые я использую:

  • Руби 2.2.2
  • Рельсы 3.2.14
  • Capistrano 2.15.6 (с Rvm/capistrano)
  • Звездочки 2.2.1

person Bruno Siqueira    schedule 12.08.2015    source источник


Ответы (2)


Решение было нелепым. Поискав в Интернете, я обнаружил, что sprockets ищет файл .sprockets-manifest.json. Которого не было (и это я не знаю почему). Поэтому я просто создал его вручную в папке shared/assets:

touch shared/assets/.sprockets-manifest.json

Оно работало завораживающе. Надеюсь, это поможет другим.

person Bruno Siqueira    schedule 28.08.2015
comment
Иногда я ненавижу программное обеспечение. Спасибо за ответ на свой вопрос, Бруно! Спасатель. - person Ryan Angilly; 07.04.2016

Ваша версия sprockets может отличаться от этого Gemfile

Можно попробовать добавить префикс bundle exec, используя Gemfile, указывает версии

Я нахожу, что исходный код capistrano 2.15.7 нашел это

# lib/capistrano/recipes/deploy/assets.rb

_cset(:asset_manifest_prefix) { (`sprockets -v`.chomp < "3.0" ? "manifest" : ".sprockets-manifest") rescue "manifest" }

Подробнее см. Что означает рейк выполнения пакета?

person Stan Chen    schedule 30.08.2019