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