FIX: Ensure TarReader is closed.

This commit is contained in:
Bianca Nenciu 2019-04-10 13:37:04 +03:00
parent 4555d0c598
commit a723699519

View File

@ -26,23 +26,27 @@ class DiscourseIpInfo
uri = URI("https://geolite.maxmind.com/download/geoip/database/#{name}.tar.gz")
tar_gz_file = Tempfile.new
begin
tar_gz_file = Tempfile.new
tar_gz_file.binmode
tar_gz_file.write(Net::HTTP.get(uri))
tar_gz_file.close
extractor = Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_file.path))
extractor.rewind
begin
extractor = Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_file.path))
extractor.rewind
extractor.each do |entry|
next unless entry.full_name.ends_with?(".mmdb")
File.open(mmdb_path(name), "wb") { |f| f.write(entry.read) }
extractor.each do |entry|
next unless entry.full_name.ends_with?(".mmdb")
File.open(mmdb_path(name), "wb") { |f| f.write(entry.read) }
end
ensure
extractor.close
end
ensure
tar_gz_file.close
tar_gz_file.unlink
extractor.close
end
end