RubyでZipを作成する方法はざっと調べた限りziprubyとrubyzipあたりが使われているっぽい。とりあえずziprubyをチョイスして、ディレクトリを含めた圧縮を実装。
def make_zip(target, zippath) Zip::Archive.open(zippath, Zip::CREATE) do |ar| if File.directory?(target) target = (target + "/").sub("//", "/") Dir::chdir(target) do Dir.glob("**/*") do |file| if File.directory?(file) ar.add_dir(target+file) else ar.add_file(target+file, file) end end end else ar.add_file(target) end end end
なんか冗長なような気もする。。。