0

Preface by saying that I'm new to Capistrano. That being said, I've got a functional app that I've used Capistrano to deploy several times before. I made several updates to the app and attempted cap production deploy. I got this error output:

** 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

It looked to me like there was an issue between Capistrano and SSHkit. I looked back at my Gemfile, which showed after a bundle update that SSHkit went from v 1.10.0 to v 1.11.1 according to my git repo.

Could an update in the sshkit gem cause this issue or should I look elsewhere? If so, how would I revert to 1.10.0 and specify that specific version in my Gemfile to avoid future issues?

PSCampbell
  • 858
  • 9
  • 27

1 Answers1

0

Yes, this could be a bug introduced by SSHKit 1.11.1.

First, I suggest opening an issue on GitHub to report this problem to the SSHKit team. That it is the fastest way to get this addressed.

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

In the meantime, to use the older version of SSHKit and avoid this problem, you can use your Gemfile to "pin" to the older version. Add this to your Gemfile:

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

Then run

bundle update sshkit
Matt Brictson
  • 10,904
  • 1
  • 38
  • 43
  • Thanks for your suggestion @Matt - I did as suggested but still seem to have the same error. I looked back at my differences and it seems Capistrano-rails updated from 1.1.6 to 1.1.7 as well. Since changing SSHkit didn't seem to help I am going to try opening an issue on Capistrano/rails – PSCampbell Jul 15 '16 at 21:15