DEV Community

Andrey for JetRockets

Posted on • Originally published at jetrockets.pro

Command for create zip archive without gem's πŸ“

class CreateZipCommand def call(files) # Create temp directory for files  tmp_dir = Dir.mktmpdir tmp_zip_path = File.join(tmp_dir, "files.zip") # Move files to the temporary folder you created above files.map do |file| download_file(file, tmp_dir) end # Go to the folder and archive the entire contents `cd #{tmp_dir} && zip #{tmp_zip_path} ./*` # Return zip path tmp_zip_path end end > CreateZipCommand.new.call(files) => "/var/folders/bk/0c864z710654sx555jpdpx9c0000gn/T/d20190126-7447-d27fpl/files.zip") 

Most gems for working with archives eat a lot of memory when working with large files. This solution does not have these problems.

Make sure that the zip utility is installed on your computer - it don't work without it

Top comments (0)