Почему упаковщик не может найти рейк при развертывании с помощью Capistrano?

У меня есть проект Rails, работающий на Ubuntu 18.04, и я только что обновил систему до Ubuntu 20.04.

cap production deployтерпит неудачу на этапеdeploy:assets:precompileс:

      00:07 deploy:assets:precompile
      01 /home/deploy/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
      01 bundler: failed to load command: rake (/var/www/framelinker/shared/bundle/ruby/2.6.0/bin/rake)
      01 Gem::Exception: can't find executable rake for gem rake. rake is not currently included in the bundle, perhaps you meant to add it to your Gemfile?

Я попробовал добавить rake в свой драгоценный файл, хотя у меня такое чувство, что это не ответ, потому что а) это не имело никакого значения и б) rake не было в моем драгоценном файле, когда все работало в Ubuntu 18.04.

Гугление говорит мне бежатьgem update --systemно я бы предпочел не возиться с сервером вручную.

Я использую rbenv на сервере. Мой драгоценный файл заблокирован на Ruby 2.6.1.

Что тут происходит? Разве rake не встроен в Ruby? Зачем мне добавлять его в драгоценный файл?

--------------- Редактировать --------------
Мне интересно, следует ли Capistrano использовать что-то вроде этого, а не то, что он делает выше:

      /home/deploy/.rbenv/bin/rbenv/shims/rake assets:precompile

Содержимое моего Capfile:

      # Load DSL and set up stages
require "capistrano/setup"

# Include default deployment tasks
require "capistrano/deploy"

require 'capistrano/sidekiq'
install_plugin Capistrano::Sidekiq # Default sidekiq tasks
# Then select your service manager
install_plugin Capistrano::Sidekiq::Systemd

# Load the SCM plugin appropriate to your project:
#
# require "capistrano/scm/hg"
# install_plugin Capistrano::SCM::Hg
# or
# require "capistrano/scm/svn"
# install_plugin Capistrano::SCM::Svn
# or
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git

# Include tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
#   https://github.com/capistrano/rvm
#   https://github.com/capistrano/rbenv
#   https://github.com/capistrano/chruby
#   https://github.com/capistrano/bundler
#   https://github.com/capistrano/rails
#   https://github.com/capistrano/passenger
#
# require "capistrano/rvm"
 require "capistrano/rbenv"
# require "capistrano/chruby"
 require "capistrano/bundler"
 require "capistrano/rails/assets"
 require 'capistrano/rails/collection'
 require "capistrano/rails/migrations"
 require "capistrano/passenger"

# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }

1 ответ

Вход на сервер и выполнение вручную следующих действий устранили эту проблему:

      /home/deploy/.rbenv/bin/rbenv exec gem update --system

Это неудовлетворительно с точки зрения воспроизводимости/CI, но, по крайней мере, это дает мне возможность продолжать, и мой сервер снова работает.

Другие вопросы по тегам