Capistrano`bundler无法加载命令:cap`

时间:2018-03-29 14:42:02

标签: ruby-on-rails capistrano rbenv

我正在开发一个Rails 3.2应用程序,它使用Capistrano 2.15.5进行部署到生产。

当我运行bundle exec cap deploy时,我得到bundler: failed to load command: cap (/.rbenv/versions/2.0.0-p353/bin/cap)

which cap返回/.rbenv/shims/cap

我想我需要更改点击/.rbenv/shims/cap的路径,但我不知道该如何去做。

deploy.rb

    require 'bundler/capistrano'
    require 'capistrano/deploy_lock'



    set :application, "website"

    set :repository, "git@github.com:my_company/website.git"
    set :branch,     "master"
    set :scm,        "git"
    set :user,       "root"

    set :deploy_to,    "/home/rails/#{application}"
    set :deploy_via,   "remote_cache"
    set :copy_exclude, ".git/*"
    set :use_sudo,      false
    set :keep_releases, 3

Capfile

# capistrano default tasks
load 'deploy'

# Rails' asset pipeline cap tasks
load 'deploy/assets'

# Vendored gem and plugin cap tasks
Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }

# Cap tasks defined in project's deploy.rb file
load 'config/deploy'

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我们遇到了这个问题,因为我们没有使用无密码(即密钥)部署。根据{{​​3}}:

  

Capistrano依赖于使用基于密钥(即无密码)身份验证的连接到您的服务器"。

我们使用旧版Capistrano(2.15.5)并且基于密码的部署正在运行。突破性的变化是将net-ssh gem从2.7.0升级到4.2.0。

我认为您可以选择指定net-ssh gem的旧版本:

# Gemfile
gem 'net-ssh', '2.7.0'  

或者为您的服务器设置基于密钥的SSH。这就是我们所做的&会推荐,因为它允许你向前移动。