【问题标题】:zipruby or rubyzip?zipruby 还是 ruby​​zip?
【发布时间】:2011-10-17 22:16:01
【问题描述】:

我在这里有一个 ruby​​ on rails 站点(rails 2.0.2,ruby 1.8.6),同时安装了 ruby​​zip 和 zipruby,但它们在 File.exists 上存在冲突?方法所以我想删除一个。关于未来最好的 zipping api 的普遍共识是什么?

一个比另一个有显着的优势吗?

【问题讨论】:

  • 你不能直接使用Ruby自带的zlib库吗?
  • 可能,但我喜欢 gem 的便利性,不打算重新实现。
  • @mauricio-linhares 我认为 zlib 界面不允许您操作 zip 文件。

标签: ruby-on-rails ruby rubyzip


【解决方案1】:

据我所知,rubyzip 有时会奇怪地处理 zip 文件,因为它自己处理 zip 文件索引和记录。例如,如果您使用 ruby​​zip 解压缩 docx 文件并重新打包,Microsoft Word 将无法打开它。但是 zipruby 使用非常标准的 libzip C 库(带有轻微的定制)并且不会破坏 docx。因此,如果您的目标是格式兼容性,我建议使用 zipruby。也许 ruby​​zip 自从我尝试后有所改进 - 但您应该自己尝试一下。

【讨论】:

  • @vaughanos 如果您有任何有用的答案,请点赞。它鼓励人们提供更好的答案。你的问题本身并没有一个明确的答案,所以我不会要求你接受:)
  • 谢谢@kelvin,我是新手,所以没有适当的“声誉”,但感谢您的回答。
  • @vaughanos 对此感到抱歉 - 我忘记了投票需要 15 分。
  • 谢谢@Kevin。我同意,在我的环境中,zipruby 会生成有效的 .docx 文件,而 ruby​​zip 不会。很有帮助
【解决方案2】:

完全随机的答案,因为我也从未尝试过:从您当前的状态继续前进,RubyZip 可能更有希望。从以下(少量)数据来看,RubyZip 更受欢迎,而且似乎更适合新版本的 Ruby:

RubyZip 1.9:http://isitruby19.com/rubyzip

ZipRuby 1.9:http://isitruby19.com/zipruby

除非你得到更好的证据,否则我会选择 ruby​​Zip。另见What zip library works well with Ruby 1.9.2?。然而,Ruby Zip (https://github.com/postmodern/rubyzip2) 的一个分支也再次表明了它的受欢迎程度。而且文档看起来更有趣。

【讨论】:

  • 谢谢,期待美好的想法。我仍在尝试确定一个是否比另一个“更好”——尽管普遍受欢迎程度可能是一个足够好的指标。
  • @vaughanos,我的一般假设是流行 -> 更多的关注和发展 -> 你最终不会因为 Rails 或 Ruby 发生变化而把包放在不起作用的 gem 上。
  • rubyzip 并不总是生成与 Windows 兼容的 zip 文件。 zipruby 似乎没有这个问题。我们最近遇到了 ruby​​zip(以及 ruby​​zip2 和 zip gem)的问题,这些问题都无法在 Windows 7 上提取 zip 文件,而在其他任何地方都可以正常工作。
  • 看看blog.huangzhimin.com/2012/10/02/avoid-using-rubyzip。在我的例子中,使用 ZipRuby 替换现有存档 (docx) 中的文件要容易得多。另一方面,RubyZip 存储库中的已知问题建议我重新压缩整个 docx 以替换一个文件。这显然会产生一个没有 docx 标头的新 zip(它仍然可以通过单词读取,但我需要 file 命令将我的文件检测为 docx)。
  • 这不是 ZipRuby 的问题 :)。
【解决方案3】:

我用过https://github.com/toretore/zippy gem 很多次,我觉得还不错。它是 ruby​​zip 的包装器,它极大地简化了 zip 文件的操作。

【讨论】:

    【解决方案4】:

    如果您只需要从 zipfile 中获取单个文件或几个文件,您可以尝试使用Pinch,它可以让您在 ruby​​ 中通过 http 提取文件

    Pinch: Retrieve a file from inside a zip file, over the network!

    【讨论】:

      【解决方案5】:

      rubyzip 似乎没有密码保护,而 zipruby 有:link

      【讨论】:

        【解决方案6】:

        似乎 ruby​​zip 可以为文件存储不正确的未压缩值,这会导致某些解压缩库(如 miniz)在解压缩时失败。 zipruby 看起来它存储了正确的未压缩大小。我打算用 zipruby。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-28
          • 2010-11-21
          • 1970-01-01
          • 2016-03-17
          • 1970-01-01
          • 2018-01-09
          • 2011-11-28
          相关资源
          最近更新 更多