EOFError:使用ftp.connect到达文件末尾

时间:2016-03-14 13:36:59

标签: ruby heroku ftp

我已经进行了很好的搜索,并且发现了一些类似的问题,但没有任何类似的东西可以使任何工作。

设置

我正在使用Heroku运行Ruby(off-Rails)脚本,该脚本基本上从API中获取数据以填充电子商务首页(对于日本的Rakuten商店),用横幅和评论散布代码,然后放入HTML文件到电子商务服务的FTP服务器上。

代码

因为我一直在尝试对此进行故障排除,所以我已经对脚本进行了硬编码,以便更容易逐步粘贴到IRB中。它看起来像这样:

require 'uri'
require 'net/ftp'

uri = URI.parse('ftp://username:password@ftp.rakuten.ne.jp:16910')

ftp = Net::FTP.new

ftp.debug_mode = true
ftp.passive = true

ftp.connect(uri.host, uri.port) # ERROR OCCURS HERE
ftp.login(uri.user, uri.password)
ftp.putbinaryfile('./output/index.html')
ftp.close

正如您所看到的,它是一个非常简单的代码。我尝试手动进入主机和端口,结果没有变化。 (虽然我发誓我得到了它的工作,但我还没有能够复制结果。)它在我的Cloud9 IDE上本地工作,但不在Heroku上工作。

问题

输入ftp.connect命令后,出现错误。以下是完整的IRB运行,通过硬编码主机和端口重新创建错误(并确认通过Cloud9 IDE工作):

irb(main):001:0> require 'uri'
=> true    
irb(main):002:0> require 'net/ftp'
=> true    
irb(main):003:0> ftp = Net::FTP.new
=> #<Net::FTP:0x007f65e242c850 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::Mutex:0x007f65e242c7b0>, @binary=true, @passive=true, @debug_mode=false, @resume=false, @sock=#<Net::FTP::NullSocket:0x007f65e242c788>, @logged_in=false, @open_timeout=nil, @read_timeout=60>    
irb(main):004:0> ftp.debug_mode = true
=> true
irb(main):005:0> ftp.passive = true
=> true    
irb(main):006:0> ftp.connect("ftp.rakuten.ne.jp", "16910")
connect: ftp.rakuten.ne.jp, 16910
EOFError: end of file reached    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:1310:in `readline'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:305:in `getline'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:317:in `getmultiline'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:334:in `getresp'
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:354:in `voidresp'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:264:in `block in connect'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'    
        from /app/vendor/ruby-2.3.0/lib/ruby/2.3.0/net/ftp.rb:262:in `connect'    
        from (irb):6    
        from /app/bin/irb:15:in `<main>'

附录

您可以给予我任何帮助将不胜感激。我对Ruby来说相对较新,而且对Heroku来说也是新手,但我真的很想让它发挥作用。

如果在Heroku上不可能,那么是否有人可以推荐另一个选项来按预期部署脚本?

补充:好的,所以代码有时会在Heroku上按预期工作。我今天早上通过IRB尝试了它并保持连接。然后计划的运行也起作用,但之后我尝试修复一个单独的问题,使用代码顶部检索到的邮件附件数据,并且FTP连接开始再次失败并出现相同的错误。然而,它仍然在本地工作。

0 个答案:

没有答案