Compression ZIP de repertoire en RUBY

Ce code source vous permettra de compresser un répertoire vers un fichier ZIP.
La fonction renvoie l'ensemble des fichiers présents dans le répertoire cible, pour palier au problème de cache.

Ne pas oublier :
gem install rubyzip

et

require 'zip/zip'
require 'zip/zipfilesystem'
require 'find'

#sDossier_save = "C:Documents and SettingsGlukose1Mes documentsmon_dossier"
#sFichier_zip = "C:Documents and SettingsGlukose1Mes documentstempbackup.zip"

def cmpFolderOnZip( sDossier_save, sFichier_zip )

#si le fichier existe, alors le supprimer
if( FileTest.exist?( sFichier_zip ) )
File.delete( sFichier_zip )
end

#mémorise les fichiers présents dans le répertoire avant la création du zip
oAllFiles = Array.new
sPathZip = File.dirname( sFichier_zip )
Find.find( sPathZip ){ |sRes_find|
if(
not FileTest.directory?( sRes_find ) )
oAllFiles.push( sRes_find )
end
}
oAllFiles.push( sFichier_zip )

Zip::ZipFile.open( sFichier_zip, Zip::ZipFile::CREATE ){ |zipfile|
Find.find( sDossier_save ){ |sRes_find|

#récupére le chemin relatif pour le zip
sDossier_base = sRes_find[ sDossier_save.length, sRes_find.length ]
if(
sDossier_base != "" )
#si c un dossier
if( FileTest.directory?( sRes_find ) )
zipfile.dir.mkdir( sDossier_base )
else
zipfile.file.open( sDossier_base, 'w' ){ |f|
f.write( File.open( sRes_find, 'rb' ).read )
}
end
end
}
zipfile.close
}

return
oAllFiles
end