我希望通过Ruby制作我选择(或允许用户选择)的任何目录的压缩* .zip文件,我不太清楚如何做到这一点。我知道如何创建* .zip文件,只是不将实际文件压缩到存档中。我做了一些谷歌搜索并发现了RubyZip和其他一些资源,但RubyZip目前处于一个失败的构建状态,我很好奇它是如何完成的,所以我不必完全依赖外部资源。非常感谢任何帮助!
答案 0 :(得分:0)
“构建状态失败”是什么意思?最终,rubyzip依赖于核心Ruby中的zlib,文件实用程序和流标准库,因此rubyzip本身就是纯Ruby,无需构建。如果有错误,您可能想要粘贴它。压缩文件和目录是not straightforward,因此IMO实际上是外部库的理想选择。
我似乎没有问题,所以我对你的实际错误感兴趣。
$ gem install rubyzip
Fetching: rubyzip-1.1.0.gem (100%) yadayada
使用source homepage上稍微修改过的示例版本,您可以轻松压缩在命令行传递的目录(递归):
require 'pathname'
require 'zip'
directory = Pathname.new(ARGV.first)
zipfile_name = "#{directory}.zip"
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
Dir[File.join(directory, '**', '**')].each do |file|
path = Pathname.new(file)
zipfile.add(path.relative_path_from(directory), file)
end
end
IMO,在这种情况下的答案是使用流行的图书馆并按照文档。 Rubyzip最近有一些变化,所以你可以找到的一些建议已经过时,或者可能有些问题需要进行一些调整。但是这个功能结果证明是一个重新发明的轮子。