bundler/lib/bundler/compact_index_client/updater.rb in rubygems-update-2.7.6 vs bundler/lib/bundler/compact_index_client/updater.rb in rubygems-update-2.7.7
- old
+ new
@@ -31,11 +31,13 @@
Dir.mktmpdir("bundler-compact-index-") do |local_temp_dir|
local_temp_path = Pathname.new(local_temp_dir).join(local_path.basename)
# first try to fetch any new bytes on the existing file
if retrying.nil? && local_path.file?
- FileUtils.cp local_path, local_temp_path
+ SharedHelpers.filesystem_access(local_temp_path) do
+ FileUtils.cp local_path, local_temp_path
+ end
headers["If-None-Match"] = etag_for(local_temp_path)
headers["Range"] =
if local_temp_path.size.nonzero?
# Subtract a byte to ensure the range won't be empty.
# Avoids 416 (Range Not Satisfiable) responses.
@@ -76,9 +78,16 @@
raise MisMatchedChecksumError.new(remote_path, response_etag, etag_for(local_temp_path))
end
update(local_path, remote_path, :retrying)
end
+ rescue Errno::EACCES
+ raise Bundler::PermissionError,
+ "Bundler does not have write access to create a temp directory " \
+ "within #{Dir.tmpdir}. Bundler must have write access to your " \
+ "systems temp directory to function properly. "
+ rescue Zlib::GzipFile::Error
+ raise Bundler::HTTPError
end
def etag_for(path)
sum = checksum_for_file(path)
sum ? %("#{sum}") : nil