Suvii is a library that abstracts content reading from a remote tar.gz/zip archive. It fetches the archive and extracts it to a temp directory.
"Сувій" [suʋii̯] in Ukrainian can mean a scroll, something which is rolled up or even a package.
Production ready.
Add this line to your application's Gemfile and run bundle
:
gem 'suvii'
temp_directory = Suvii.fetch("https://registry.npmjs.org/coffee-script/-/coffee-script-2.0.0.tgz")
# do whatever you need with extracted content
Dir.glob("#{temp_directory}/**/*").each do |entry|
# ...
end
Note, that fetching same URL twice will unpack to another temp directory. Such design decision was based on assumption, that generally you don't need everything in an archive, or even have to modify something. This extra copy/modify step should be totally independent from extraction, and you shouldn't worry about cleanup, or that another process could mess things up.
Extracted from Torba library since it looks more like a standalone component.