Capistrano bash:bundle:命令未找到,甚至已经安装

时间:2018-03-26 06:47:58

标签: ruby-on-rails ruby capistrano

大家好我将rails应用程序部署到生产服务器时遇到问题。实际上我已通过bundle在服务器中安装了gem install bundler。不幸的是,当我输入cap production deploy时,它变成了这样:

** [out :: server url] bash: bundle: command not found
    command finished in 772ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deployer/crawler/releases/20180326063414; true"
    servers: ["server url"]
    [server url] executing command
    command finished in 833ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-2.2.1' -c 'cd /home/deployer/crawler/releases/20180326063414 && bundle install --gemfile /home/deployer/crawler/releases/20180326063414/Gemfile --path /home/deployer/crawler/shared/bundle --deployment --quiet --without development test'" on server url

它说bash: bundle: command not found。我键入bundle --version输出为:

  

Bundler版本1.16.1

这是我的宝石文件

group :development do
  gem 'capistrano', '~>2.15.4'
  gem 'rvm-capistrano', '1.4.1', require: false
  gem 'invoker'
  gem 'regularity', require: nil
  gem 'pry-rails'
end

这是我的deploy.rb:

require "bundler/capistrano"
require "rvm/capistrano"
require 'capistrano/ext/multistage'
require 'rollbar/capistrano'

#set :rollbar_token, '3dc5b293a0c74c3e8b98ab26f07bea74'
set :rollbar_token, 'de21e333f1d5469ea521c2ef3a29bd3d'

set :application, "crawler"
# set :repository,  "git@bitbucket.org:terbang-ventures/linkedin-scraper.git"
set :repository,  "git@bitbucket.org:terbang-ventures/linkedin-scraper.git"

set :rails_env, "production"
set :branch, "master"

set :scm, :git
set :default_shell, '/bin/bash -l'

# set :whenever_environment, defer { stage }
# require "whenever/capistrano"
set :stages, %w(production staging)
set :user, 'deployer'
set :rvm_type, :user
set :rvm_ruby_string, 'ruby-2.2.1'
set :rvm_binary, '~/.rvm/bin/rvm'
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))

set :deploy_to, "/home/#{user}/#{application}"
set :use_sudo, false

set :deploy_via, :remote_cache

default_run_options[:pty] = true
ssh_options[:forward_agent] = true

namespace :deploy do
  desc 'Load environment variables'
  task :load_env_vars do
    run "ln -s /home/#{user}/env.yml #{current_release}/config/env.yml"
  end

  desc "Migrate DB1"
  task :migrate_db1  do
    # rake db:migrate_db1 RAILS_ENV=staging
    run "cd #{current_path} && bundle exec rake db:migrate_db1 RAILS_ENV=#{rails_env}"
  end

  desc 'Re-establish mongoid.yml'
  task :set_database_symlink do
    run "ln -s /home/#{user}/mongoid.yml #{current_release}/config/mongoid.yml"
  end

  desc 'Re-establish database.yml'
  task :set_database_symlink_active_record do
    run "ln -s /home/#{user}/database.yml #{current_release}/config/database.yml"
  end

  desc 'run bundle install'
  task :install_bundle do
    run "cd #{current_path} && bundle install"
  end

  task :restart, :roles => :app, :except => { :no_release => true } do
    run "ps axf | grep puma | grep -v grep | awk '{print \"kill -9 \" $1}' | sh"
    run "cd #{current_path} && bundle exec puma -e #{rails_env} -p 9292 -d"
    run "cd #{current_path} && bundle exec puma -e #{rails_env} -p 9293 -d"
  end

  task :stop, :roles => :app, :except => { :no_release => true } do
    run "ps axf | grep puma | grep -v grep | awk '{print \"kill -9 \" $1}' | sh"
  end

  task :start, :roles => :app, :except => { :no_release => true } do
    run "cd #{current_path} && bundle exec puma -e #{rails_env} -p 9292 -d"
    run "cd #{current_path} && bundle exec puma -e #{rails_env} -p 9293 -d"
  end
end


namespace :searchkick do
  # reindex
  namespace :reindex do
    # Reindex Contact
    task :contact, except: {no_release: true} do
      run "cd #{current_path} && bundle exec rake searchkick:reindex CLASS=Contact RAILS_ENV=#{rails_env}"
    end

    # Reindex Contact
    task :company, except: {no_release: true} do
      run "cd #{current_path} && bundle exec rake searchkick:reindex CLASS=Company RAILS_ENV=#{rails_env}"
    end

    task :user, except: {no_release: true} do
      run "cd #{current_path} && bundle exec rake searchkick:reindex CLASS=User RAILS_ENV=#{rails_env}"
    end

    task :all, except: {no_release: true} do
      run "cd #{current_path} && bundle exec rake searchkick:reindex:all RAILS_ENV=#{rails_env}"
    end
  end
end


namespace :importer do
  task :department, roles: :app, except: {no_release: true} do
    run "cd #{current_path} && bundle exec rake importer:import_department RAILS_ENV=#{rails_env}"
  end

  task :staff_level, roles: :app, except: {no_release: true} do
    run "cd #{current_path} && bundle exec rake importer:import_staff_level RAILS_ENV=#{rails_env}"
  end

  task :email_format, roles: :app, except: {no_release: true} do
    run "cd #{current_path} && bundle exec rake importer:import_email_format RAILS_ENV=#{rails_env}"
  end

  task :combined_emails, roles: :app, except: {no_release: true} do
    run "cd #{current_path} && bundle exec rake importer:import_combined_emails RAILS_ENV=#{rails_env}"
  end

  task :late_address, roles: :app, except: {no_release: true} do
    run "cd #{current_path} && bundle exec rake importer:import_late_address RAILS_ENV=#{rails_env}"
  end
end

namespace :rails do
  desc "Remote console"
  task :console, roles: :app, except: { no_release: true } do
    run_interactively "bundle exec rails c -e #{rails_env}"
  end

  desc "Remote dbconsole"
  task :dbconsole, roles: :app, except: { no_release: true } do
    run_interactively "bundle exec rails dbconsole -e #{rails_env}"
  end

  # Short aliases
  task :c, roles: :app do
    console
  end

  task :dbc, roles: :app do
    dbconsole
  end

  desc "Monitor log"
  task :log, roles: :app, except: { no_release: true } do
    run_interactively "tail -f log/#{rails_env}.log"
  end

  def run_interactively(command)
    server ||= find_servers_for_task(current_task).first
    puts "    running `#{command}` as #{user}@#{server}"
    exec %Q(ssh #{user}@#{server} -t "bash --login -c 'cd #{current_path} && #{command}'")
  end
end


after "deploy", "deploy:cleanup"
after "deploy", "deploy:migrate"
after "deploy:migrate", "deploy:migrate_db1"
after "deploy:start", "sidekiq:start"
after "deploy", "sidekiq:restart"
before "deploy:assets:precompile", "deploy:load_env_vars"
before "deploy:assets:precompile", "deploy:set_database_symlink"
before "deploy:assets:precompile", "deploy:set_database_symlink_active_record"
before "deploy:assets:precompile", "deploy:assets:clean"
before "deploy:migrate", "deploy:install_bundle"

我的问题是,为什么capistrano仍然要求bundle命令找不到,如果我在rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-2.2.1' -c 'cd /home/deployer/crawler/releases/20180326065919 && bundle install --gemfile /home/deployer/crawler/releases/20180326065919/Gemfile --path /home/deployer/crawler/shared/bundle --deployment --quiet --without development test'中找不到它?

0 个答案:

没有答案