【问题标题】:Capistrano Deployment Failure - SSH Kit?Capistrano 部署失败 - SSH 工具包?
【发布时间】:2016-07-14 22:23:49
【问题描述】:

先说我是 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 存储库,SSHkit 从 v 1.10.0 升级到 v 1.11.1。

sshkit gem 中的更新是否会导致此问题,或者我应该寻找其他地方吗?如果是这样,我将如何恢复到 1.10.0 并在我的 Gemfile 中指定该特定版本以避免将来出现问题?

【问题讨论】:

    标签: ruby-on-rails capistrano sshkit


    【解决方案1】:

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

    首先,我建议在 GitHub 上打开一个问题,将此问题报告给 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
    

    【讨论】:

    • 感谢您的建议@Matt - 我按照建议做了,但似乎仍然有同样的错误。我回顾了我的差异,似乎 Capistrano-rails 也从 1.1.6 更新到了 1.1.7。由于更改 SSHkit 似乎没有帮助,我将尝试在 Capistrano/rails 上打开一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多