How do i go about zipping a directory in ruby on rails? I've tried rubyzip without success. I don't need to zip the contents of the dir individually just zip the dir itself.
You are going to have to loop through the items in the directory to add an entry in the compressed file.
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/
Another way to do it with a command
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
Update
Thank you Mahmoud Khaled for the edit/update
for the new version use Zip::File.open
instead of Zip::ZipFile.open