Поэтому у меня есть некоторый код, который проверяет, есть ли определенный файл на удаленном сервере SFTP:Net :: SFTP :: Session не может работать стат, по-видимому, имеет канал Nil
def size
adapter.sftp.stat(path).size
end
где sftp
является нетто :: объект SFTP :: Session определяется в этом случае, как
@sftp = Net::SFTP.start(host, username, password: password)
и path
это путь к файлу объекта, который я хочу, чтобы позвонить stat()
дальше.
К сожалению, когда я пытаюсь этот код Выполнение выражений, я получаю эту ошибку:
NoMethodError:
undefined method `send_data' for nil:NilClass
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:814:in `send_packet'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/protocol/base.rb:45:in `send_request'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/protocol/01/base.rb:90:in `open'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:830:in `request'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:182:in `open'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:191:in `open!'
# /usr/local/lib/ruby/gems/2.2.0/gems/net-sftp-2.1.2/lib/net/sftp/operations/file_factory.rb:40:in `open'
# /Users/Ben/remote_filesystem/lib/remote_filesystem/path/sftp.rb:46:in `size'
# ./sftp_spec.rb:72:in `block (3 levels) in <top (required)>'
Насколько я могу сказать, глядя на исходный код для Net :: SFTP :: сессии, на линии 814 из session.rb
, channel.send_data
, но, по-видимому, мой SFTP-сеанс по какой-то причине имеет канал Nil. Может ли кто-нибудь объяснить, как исправить эту проблему?