2011-02-16 56 views
4

是否有高级别的Ruby库与FTP服务器进行交互?是否有一个易于使用的Ruby的FTP库?

而不是Net :: HTTP我可以使用HTTParty,Curb,Rest Client或Typhoeus,它使一切变得更容易,但我找不到任何类似的解决方案来替换/增强Net :: FTP。

更具体地说,我在寻找:

  • 最小的线路连接到服务器。例如,必须使用Net :: FTP
  • 明确指定登录才能遍历一个文件夹中的所有条目,或者使用glob,或者只是递归地进行迭代。
  • 能够获取所有可能的信息,例如条目类型,大小,mtime而无需手动解析返回的行。
+1

有没有你想做的事情不是由Net :: FTP完成的? – 2011-02-16 13:51:57

+0

@Jed:不,只是让它更容易 – tig 2011-02-16 14:11:43

回答

5

Ruby的内置Open-URI将处理FTP。

从OpenURI的文档:

OpenURI是网/ HTTP,净/ HTTPS和净/ FTP一个易于使用的包装。

这似乎在检索Ruby源代码时挂起,但应该在一两分钟后返回。

require 'open-uri' 
open('ftp://ftp.ruby-lang.org//pub/ruby/ruby-1.9.2-p136.tar.bz2') do |fi| 
    File.open('ruby-1.9.2-p136.tar.bz2', 'wb') do |fo| 
    fo.puts fi.read 
    end 
end 

或者,Net::FTP很容易用了更多的功能使用:

require 'net/ftp' 

Net::FTP.open('ftp.ruby-lang.org') do |ftp|  
    ftp.login 
    ftp.chdir('/pub/ruby') 
    puts ftp.list('ruby-1.9.2*') 
    puts ftp.nlst() 

    ruby_file = 'ruby-1.9.2-p136.tar.bz2' 
    ftp.getbinaryfile(ruby_file, ruby_file, 1024) 
end 
相关问题