【问题标题】:Is there an easy-to-use FTP library for Ruby?是否有一个易于使用的 Ruby FTP 库?
【发布时间】:2011-06-28 09:12:53
【问题描述】:

是否有与 FTP 服务器交互的高级 Ruby 库?

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

更具体地说,我正在寻找:

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

【问题讨论】:

  • 您是否想做一些 Net::FTP 无法完成的事情?
  • @Jed:不,只是让它更容易
  • 以什么方式更容易? Ruby 的 Net::FTP 对我来说似乎很简单......
  • @maerics:连接服务器的行数更容易,递归列出选定文件夹中的文件,无需手动解析 ftp.list(...) 的每一行即可获取有关条目的信息
  • 我投票决定保持开放,因为最佳答案是与 Ruby 语言捆绑的库。而且因为我不太关心在最新规则下脱离主题的旧问题。

标签: ruby ftp


【解决方案1】:

Ruby 的内置 OpenURI 将处理 FTP。

来自 OpenURI 的文档:

OpenURI 是一个易于使用的 net/http、net/https 和 net/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

【讨论】:

  • 我无法使用open-uri列出文件夹内容
  • 然后使用 Net::FTP。我还会考虑通过 Curb gem 或使用反引号调用 cURL 来使用 cURL。
【解决方案2】:

您尝试过 EventMachine 吗? https://github.com/schleyfox/em-ftp-client

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多