我在这里有一个 ruby on rails 站点(rails 2.0.2,ruby 1.8.6),同时安装了 rubyzip 和 zipruby,但它们在 File.exists 上存在冲突?方法所以我想删除一个。关于未来最好的 zipping api 的普遍共识是什么?
一个比另一个有显着优势吗?
我在这里有一个 ruby on rails 站点(rails 2.0.2,ruby 1.8.6),同时安装了 rubyzip 和 zipruby,但它们在 File.exists 上存在冲突?方法所以我想删除一个。关于未来最好的 zipping api 的普遍共识是什么?
一个比另一个有显着优势吗?
据我所知,rubyzip 有时会奇怪地处理 zip 文件,因为它自己处理 zip 文件索引和记录。例如,如果您使用 rubyzip 解压缩 docx 文件并重新打包,Microsoft Word 将无法打开它。但是 zipruby 使用非常标准的 libzip C 库(带有轻微的定制)并且不会破坏 docx。因此,如果您的目标是格式兼容性,我建议使用 zipruby。也许 rubyzip 自从我尝试后有所改进 - 但你应该自己尝试一下。
完全随机的答案,因为我也从未尝试过:从您当前的状态继续前进,RubyZip 可能更有希望。从以下(少量)数据来看,RubyZip 更受欢迎,而且似乎更适合新版本的 Ruby:
RubyZip 1.9:http: //isitruby19.com/rubyzip
ZipRuby 1.9:http: //isitruby19.com/zipruby
除非你得到更好的证据,否则我会选择 rubyZip。另请参阅What zip library 适用于 Ruby 1.9.2?. 然而,还有一个 RubyZip 的分支 ( https://github.com/postmodern/rubyzip2 ) 再次表明它很受欢迎。文档看起来更有趣。
我经常使用https://github.com/toretore/zippy gem,我认为它非常好。它是 rubyzip 的包装器,它极大地简化了 zip 文件的操作。
似乎 rubyzip 可以为文件存储不正确的未压缩值,这会导致一些解压缩库(如 miniz)在解压缩时失败。zipruby 看起来像是存储了正确的未压缩大小。我将使用 zipruby。
如果您只需要从 zipfile 中获取单个文件或几个文件,您可以尝试使用Pinch
它可以让您在 ruby 中通过 http 提取文件
rubyzip 似乎不做密码保护,而 zipruby 做:link