Jamis Buck
2/14/2006 3:37:00 PM
On Feb 14, 2006, at 6:03 AM, zdennis wrote:
> I recently downloaded net/ssh 1.0.7 and net/sftp 1.1.0. But I get
> problems with ruby 1.8.2, 1.8.3 on either windows, debian or ubuntu
> boxes.
>
> require 'rubygems'
> require 'net/sftp'
>
> sftp_sess = Net::SFTP.start 'host', 'username', 'password'
> sftp_sess.put_file '/home/uberriffic/test.txt', '/home/uberriffic/
> remote_test.txt'
> NoMethodError: private method `open' called for
> #<Net::SFTP::Protocol::Driver:0xb7863790>
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/protocol/driver.rb:201:in `method_missing'
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/operations/open.rb:27:in `perform'
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/operations/abstract.rb:64:in `execute'
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/session.rb:253:in `method_missing'
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/session.rb:177:in `open_handle'
> from /usr/lib/ruby/gems/1.8/gems/net-sftp-1.1.0/lib/net/
> sftp/session.rb:203:in `put_file'
> from (irb):4
> from :0
Here are two workarounds:
First, you can use a block to Net::SFTP.start:
Net::SFTP.start(...) do |sess|
sess.put_file(...)
end
Or, if you can't use the block format for whatever reason, be sure to
call #connect after calling start:
sess = Net::SFTP.start(...)
sess.connect
sess.put_file(...)
Not sure why that connect isn't being called automatically, but I'll
look into it.
- Jamis