Rbenv не может найти пряжу во время развертывания Capistrano - PullRequest
0 голосов
/ 20 октября 2018

Я использовал Capistrano для развертывания моего приложения на Rails.Ошибка на следующем шаге:

   01 $HOME/.rbenv/bin/rbenv exec bundle install --path /var/www/bubblin.io/shared/bundle --without development test --deployment --quiet
    ✔ 01 marvin@bubblin.io 1.053s
00:26 yarn:install
      01 $HOME/.rbenv/bin/rbenv exec yarn install --production
      01 rbenv: yarn: command not found

$HOME/.rbenv/bin/rbenv exec yarn install --production
      01 rbenv: yarn: command not found
#<Thread:0x00007fb9b626fcd8@/Users/sa/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    1: from /Users/sa/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/Users/sa/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as marvin@bubblin.io: yarn exit status: 127 (SSHKit::Runner::ExecuteError)
yarn stdout: rbenv: yarn: command not found
yarn stderr: Nothing written
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as marvin@bubblin.io: yarn exit status: 127
yarn stdout: rbenv: yarn: command not found
yarn stderr: Nothing written

Я ssh'ed на сервер и пробовал следующее, который работает:

$ yarn install --production
yarn install v1.10.1
[1/4] Resolving packages...
success Nothing to install.
success Saved lockfile.
Done in 0.06s.

Но когда я префикс той же команды с rbenv exec не удается.

$ rbenv exec yarn install --production
rbenv: yarn: command not found

Кажется, что все зависимости установлены правильно, но rbenv по какой-то причине не может найти yarn?

1 Ответ

0 голосов
/ 20 октября 2018

Я думаю, yarn - менеджер пакетов nodejs, не должен запускаться через rbenv exec, возможно?

Итак, в этом случае вы можете просто использовать его из обычной оболочки, а не из rbenv.Например, попытайтесь создать задачу следующим образом:

desc "Yarn Install"
task :yarn_install do
  on roles(:all) do |host|
    execute :yarn, :install, "--production"
  end
end

Затем запустите ее с bundle exec cap production yarn_install

Или вызовите задачу из другой задачи, которая у вас есть, и т. Д.

Обновление:

Если не используется пряжа,

В Gemfile удалите или прокомментируйте 'capistrano-yarn'

#gem 'capistrano-yarn'

В Capfile удалите иликомментарий 'capistrano / yarn'

#require 'capistrano/yarn'

Для создания нового проекта:

rails new <name> --skip-yarn

Но в существующем проекте установите webpacker.check_yarn_integrity на falseв файлах приложения env (то есть app / config / development.rb app / config / production.rb)

config.webpacker.check_yarn_integrity = false

Найдите javascript_pack_tag или stylesheet_pack_tag в app/views/* пути, затем закомментируйте их, какитак:

<%# javascript_pack_tag "" %>
<%# stylesheet_pack_tag "" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...