net-ssh/net-scp

Adding support for home directory relative paths

Opened this issue · 2 comments

2.0.0p195 :004 > Net::SCP.upload!('server', 'deploy', 'foo.txt', '~/foo.txt')
Net::SCP::Error: SCP did not finish successfully (1)
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-scp-1.1.2/lib/net/scp.rb:359:in `block (3 levels) in start_command'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:591:in `call'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:591:in `do_close'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:586:in `channel_close'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:118:in `close'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-scp-1.1.2/lib/net/scp.rb:205:in `ensure in start'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-scp-1.1.2/lib/net/scp.rb:205:in `start'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/net-scp-1.1.2/lib/net/scp.rb:221:in `upload!'
    from (irb):4
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/railties-3.2.14/lib/rails/commands/console.rb:47:in `start'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/railties-3.2.14/lib/rails/commands/console.rb:8:in `start'
    from /Users/betelgeuse/.rvm/gems/ruby-2.0.0-p195/gems/railties-3.2.14/lib/rails/commands.rb:41:in `<top (required)>'
    from ./script/rails:25:in `require'
    from ./script/rails:25:in

Documenting here in case someone else stumbles on this. This prevents using home directory type urls in capistrano remote files. If someone has pointers what I should look at for creating a pull request, I could get one together.

@betelgeuse File.expand_path is how you normally expand the path, I'd just add that into the download and upload functions :)

I think the same error will come up if you don't have 'write' permissions for the given upload path.