我有一个 Ruby on Rails(Rails 3.2.14 和 ruby 1.9.3)应用程序,可以将 2 个文件上传到远程 SFTP 服务器。SFTP 代码为:
require 'net/sftp'
Rails.logger.info("Creating SFTP connection")
uri = URI.parse('sftp://'+ host)
Net::SFTP.start(uri.host,'user', :password=>'password',:port=>port) do |sftp|
Rails.logger.info("SFTP Connection created, uploading files.")
sftp.upload!("public/file1.txt", "./file1.txt")
Rails.logger.info("First file uploaded.")
sftp.upload!("file2.txt", "./file2.txt")
Rails.logger.info("Both files uploaded, terminating connection.")
end
Rails.logger.info("Connection terminated.")
两个文件都正确上传到远程服务器,但连接似乎没有关闭。当我执行此功能并分析我的控制台时,我不断收到错误消息,我看到“两个文件都已上传,正在终止连接”。记录器消息正在运行,但之后没有任何内容。我试过使用
sftp.close(:handle)
sftp.close!(:handle)
#and
sftp.close_connection()
但他们都没有工作。关于为什么会发生这种情况以及如何纠正它的任何想法?我通过单实例引擎场云服务器运行它。
编辑 这些是我日志中的最后几行: 创建 SFTP 连接 SFTP 连接已创建,正在上传文件。第一个文件上传。两个文件都上传,终止连接。
在那之后,什么都没有。使用“tail -f”命令查看我的日志时,日志会上升到最后一行,并且应用程序会重定向到内部服务器错误页面。