cap deploy + rbenv: bundle: command not found

╄→尐↘猪︶ㄣ 提交于 2019-12-20 04:57:06

问题


I am following https://gorails.com/deploy/ubuntu/16.04

I am running : "bundle exec cap production deploy" and getting the following error:

    ✔ 10 deploy@107.170.84.18 0.289s
00:21 bundler:install
      01 $HOME/.rbenv/bin/rbenv exec bundle install --path /home/deploy/deploy_test1/shared/bundle --without development test --deployment --q…
      01 rbenv: bundle: command not found
      01
      01 The `bundle' command exists in these Ruby versions:
      01   2.4.0
      01
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@107.170.84.18: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.4.0

SSHKit::Command::Failed: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.4.0

Tasks: TOP => deploy:updated => bundler:install
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deploy@107.170.84.18: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.4.0


** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:


 DEBUG [3de26178] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.3.1" ; /usr/bin/env ln -s /home/deploy/deploy_test1/shared/public/assets /home/deploy/deploy_test1/releases/20170509194018/public/assets )

  INFO [3de26178] Finished in 0.289 seconds with exit status 0 (successful).

 DEBUG [25920183] Running if test ! -d /home/deploy/deploy_test1/releases/20170509194018; then echo "Directory does not exist '/home/deploy/deploy_test1/releases/20170509194018'" 1>&2; false; fi as deploy@107.170.84.18

 DEBUG [25920183] Command: if test ! -d /home/deploy/deploy_test1/releases/20170509194018; then echo "Directory does not exist '/home/deploy/deploy_test1/releases/20170509194018'" 1>&2; false; fi

 DEBUG [25920183] Finished in 0.291 seconds with exit status 0 (successful).

 DEBUG [7b4c3ff7] Running $HOME/.rbenv/bin/rbenv exec bundle check --path /home/deploy/deploy_test1/shared/bundle as deploy@107.170.84.18

 DEBUG [7b4c3ff7] Command: cd /home/deploy/deploy_test1/releases/20170509194018 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.3.1" ; $HOME/.rbenv/bin/rbenv exec bundle check --path /home/deploy/deploy_test1/shared/bundle )

 DEBUG [7b4c3ff7]   rbenv: bundle: command not found

 DEBUG [7b4c3ff7]   

The `bundle' command exists in these Ruby versions:

 DEBUG [7b4c3ff7]     2.4.0

 DEBUG [7b4c3ff7]   

 DEBUG [7b4c3ff7] Finished in 0.399 seconds with exit status 127 (failed).

  INFO [3bbf2dfd] Running $HOME/.rbenv/bin/rbenv exec bundle install --path /home/deploy/deploy_test1/shared/bundle --without development test --deployment --quiet as deploy@107.170.84.18

 DEBUG [3bbf2dfd] Command: cd /home/deploy/deploy_test1/releases/20170509194018 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.3.1" ; $HOME/.rbenv/bin/rbenv exec bundle install --path /home/deploy/deploy_test1/shared/bundle --without development test --deployment --quiet )

 DEBUG [3bbf2dfd]   rbenv: bundle: command not found

 DEBUG [3bbf2dfd]   

The `bundle' command exists in these Ruby versions:

 DEBUG [3bbf2dfd]     2.4.0

 DEBUG [3bbf2dfd]

"gem list" shows : bundler (1.14.6) on both machines, as well as ruby 2.4.0 on both my production machine as well as the server. How to proceed?

I am posting my Capfile:

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

# Include default deployment tasks
require "capistrano/deploy"

# 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

# If you are using rbenv add these lines:
require 'capistrano/rbenv'
set :rbenv_type, :user
set :rbenv_ruby, '2.3.1'

require 'capistrano/bundler'
require 'capistrano/rails'
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 }

my deploy.rb:

# config valid only for current version of Capistrano
lock "3.8.1"

set :application, "deploy_test1"
set :repo_url, "git@bitbucket.org:confidentialname/deploy_test1.git"

set :deploy_to, '/home/deploy/deploy_test1'

#append :linked_files, "config/database.yml", "config/secrets.yml"
append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle", "public/system", "public/uploads"

回答1:


It looks like rbenv is set to run Ruby 2.3.1. Several places in the log you have RBENV_VERSION="2.3.1". According to the rbenv documentation, you can find out how that was set with rbenv version. If you want to test Ruby 2.4.0, you'll need to point to that version. Alternatively, if you really mean to run on 2.3.1, you'll need to install bundler.



来源:https://stackoverflow.com/questions/43878840/cap-deploy-rbenv-bundle-command-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!