Почему упаковщик не может найти рейк при развертывании с помощью 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, но, по крайней мере, это дает мне возможность продолжать, и мой сервер снова работает.