Ruby net sftp загрузить файл по относительному пути

Я хочу загружать файлы на удаленный sftp-сервер с относительным путем. Например, я хочу иметь возможность загружать файлы на sftp://myserver.com/FileStore. Я пробовал использовать следующий код, но он не работает: NB: хост myserver.com/FileStore

uri = URI.parse('sftp://' + host)
Net::SFTP.start(uri.host,username,:password=>password,:port=>port) do |sftp|
                    sftp.upload(testupload.zip,"#{uri.path}/testupload.zip")
                end

Это ошибка, которую я получаю:

Net::SFTP::StatusException open /FileStore/testupload.zip (2, "no such file")

person zulqarnain    schedule 03.06.2013    source источник
comment
вы уверены, что этот файл находится в правильном месте, и это правильный путь? testupload.zip вызывает метод zip в объекте testupload? может быть, вам нужно удалить testupload.zip из целевого патча?   -  person fotanus    schedule 03.06.2013
comment
Даже если я уберу это, это все равно не сработает. Я думаю, проблема в том, что он определяет его как полный путь вместо относительного пути из домашнего каталога пользователя.   -  person zulqarnain    schedule 03.06.2013


Ответы (1)


Я могу решить это, используя следующий код:

uri = URI.parse('sftp://' + host)
Net::SFTP.start(uri.host,username,:password=>password,:port=>port) do |sftp|
    sftp.upload(testupload.zip,"./#{uri.path}/testupload.zip")
end

Всегда предполагая, что путь после имени сервера является относительным путем от домашнего каталога пользователя, вошедшего в систему.

person zulqarnain    schedule 04.06.2013