Webpacker, пряжа и capistrano, ошибка [email protected]

У меня есть проект, который я недавно перешел с rails 5.0 на rails 5.1, до этого у меня был установлен webpacker, и я развертывал его с помощью capistrano, в rails 5.0 все работало, но когда я внес изменения, capistrano не может завершить работу с активами: предварительно скомпилировать задачу, и я получаю эту ошибку:

** СБОЙ РАЗВЕРТЫВАНИЯ ** Подробную информацию см. В журнале / capistrano.log. Вот последние 20 строк: ..... DEBUG [04ae7a64] Команда: cd / home / deploy / my-site / Release / 20170602233846 && (export RAILS_ENV = "staging"; ~ / .rvm / bin / rvm default do связка exec rake assets: precompile)

DEBUG [04ae7a64] yarn install v0.24.5

DEBUG [04ae7a64] [1/4] Разрешение пакетов ...

DEBUG [04ae7a64] [2/4] Получение пакетов ...

DEBUG [04ae7a64] предупреждение [email protected]: платформа "linux" несовместима с этим модулем.

DEBUG [04ae7a64] info «[email protected]» - это необязательная зависимость и неудачная проверка совместимости. Исключение из установки.

DEBUG [04ae7a64] [3/4] Связывание зависимостей ...

DEBUG [04ae7a64] [4/4] Сборка новых пакетов ...

DEBUG [04ae7a64] Сделано в 9.29с.

Я использую локальный компьютер с ubuntu, и ubuntu также установлен на сервере.

Я не знаю, где [email protected] требуется в качестве зависимости, но я не могу выполнить развертывание с двух дней назад и не нашел решения.


person Eduardo    schedule 02.06.2017    source источник


Ответы (1)


РЕДАКТИРОВАТЬ: Я думаю, что моя первоначальная установка Webpacker должна была почему-то пойти не так. Использование основной ветки webpacker и повторный запуск bundle exec rake webpacker:install устранили эту проблему.


Исходный ответ. Сегодня я столкнулся с той же ошибкой. Я думаю, что ./bin/yarn install --no-progress, который естественно запускает задача Rails Rails, должен возвращать ненулевой код выхода.

Сначала я попытался переопределить задачу yarn:install rake, чтобы добавить --ignore-optional, но это не сработало.

Я добился успеха в развертывании, добавив рейк-задачу lib/tasks/yarn.rake, содержащую:

namespace :yarn do
  desc "Install all JavaScript dependencies as specified via Yarn"
  task :install do
    puts "Ignoring yarn install failure"

    begin
      system "./bin/yarn install --no-progress --ignore-optional; true"
    rescue
      exit(true)
    end

    exit(true)
  end
end

task(:default).clear.enhance(['yarn:install'])

# Run Yarn prior to Sprockets assets precompilation, so dependencies are available for use.
if Rake::Task.task_defined?("assets:precompile")
  Rake::Task["assets:precompile"].enhance [ "yarn:install" ]
end

Это заменяет задачу Rails по умолчанию yarn install rake, чтобы в значительной степени гарантировать, что Capistrano не перехватит какие-либо ошибки. Это не очень хорошее решение, но, по крайней мере, оно обеспечивает успешное развертывание. Надеюсь, законная ошибка установки пряжи приведет к другой ошибке позже в сборке ресурсов.

person cdyer    schedule 08.06.2017