2011-02-16 19 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 
相關問題