我正在开发一个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'
非常感谢任何帮助。
答案 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。这就是我们所做的&会推荐,因为它允许你向前移动。