0

前言说我是 Capistrano 的新手。话虽如此,我有一个功能性应用程序,之前我曾多次使用 Capistrano 部署过该应用程序。我对应用程序进行了几次更新并尝试了cap production deploy. 我得到了这个错误输出:

** Invoke deploy:check (first_time)
** Execute deploy:check
** Invoke git:check (first_time)
** Invoke git:wrapper (first_time)
** Execute git:wrapper
00:00 git:wrapper
      01 mkdir -p /tmp/dentalimager/
cap aborted!
ArgumentError: wrong number of arguments (0 for 1)
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/capistrano-3.5.0/lib/capistrano/dsl/env.rb:16:in `any?'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/host.rb:84:in `block in netssh_options'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/host.rb:83:in `tap'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/host.rb:83:in `netssh_options'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/capistrano-3.5.0/lib/capistrano/configuration/server.rb:59:in `netssh_options'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/netssh.rb:159:in `with_ssh'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/netssh.rb:108:in `execute_command'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `block in create_command_and_execute'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `tap'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `create_command_and_execute'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:74:in `execute'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/capistrano-3.5.0/lib/capistrano/tasks/git.rake:16:in `block (3 levels) in <top (required)>'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `instance_exec'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `run'
/home/patrick/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => git:check => git:wrapper
The deploy has failed with an error: wrong number of arguments (0 for 1)
** Invoke deploy:failed (first_time)
** Execute deploy:failed

在我看来,Capistrano 和 SSHkit 之间存在问题。我回顾了我的 Gemfile,bundle update根据我的 git repo,它显示 SSHkit 从 v 1.10.0 升级到 v 1.11.1。

sshkit gem 中的更新会导致这个问题还是我应该去别处看看?如果是这样,我将如何恢复到 1.10.0 并在我的 Gemfile 中指定该特定版本以避免将来出现问题?

4

1 回答 1

0

是的,这可能是 SSHKit 1.11.1 引入的错误。

首先,我建议在 GitHub 上打开一个 issue 向 SSHKit 团队报告这个问题。这是解决这个问题的最快方法。

https://github.com/capistrano/sshkit/issues

同时,要使用旧版本的 SSHKit 并避免这个问题,您可以使用 Gemfile 将旧版本“固定”到旧版本。将此添加到您的 Gemfile 中:

# Place this next to gem "capistrano", i.e. in the :development group
gem "sshkit", "1.10.0"

然后运行

bundle update sshkit
于 2016-07-14T22:59:53.103 回答