我如何去Ruby on Rails中荏苒一个目录? 我已经试过rubyzip没有成功。 我并不需要压缩的目录中的内容单独只是压缩的目录本身。
Answer 1:
你将不得不遍历目录中的商品添加压缩文件中的一个条目。
def compress(path)
gem 'rubyzip'
require 'zip/zip'
require 'zip/zipfilesystem'
path.sub!(%r[/$],'')
archive = File.join(path,File.basename(path))+'.zip'
FileUtils.rm archive, :force=>true
Zip::ZipFile.open(archive, 'w') do |zipfile|
Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
zipfile.add(file.sub(path+'/',''),file)
end
end
end
http://grosser.it/2009/02/04/compressing-a-folder-to-a-zip-archive-with-ruby/
另一种方式的命令去做
Dir["*"].each do |file|
if File.directory?(file)
#TODO add OS specific,
# 7z or tar .
`zip -r "#{file}.zip" "#{file}"`
end
end
http://ruby-indah-elegan.blogspot.com/2008/12/zipping-folders-in-folder-ruby-script.html
更新
谢谢马哈茂德·哈立德的编辑/更新
新版本使用Zip::File.open
代替Zip::ZipFile.open
Answer 2:
您可以通过创建目录的存档焦油tar -cvf your_dir.tar your_dir/
然后压缩在使用Rails焦油 -
def gzip_my_dir_tar(your_dir_tar_file)
content = File.read(your_dir_tar_file)
ActiveSupport::Gzip.compress(content)
end
它已经回答了在Rails 3的:如何生成的请求压缩文件
文章来源: Zipping a directory in Rails [closed]