ruby/rubygems · error · Gem::RemoteFetcher::FetchError

redirecting but no redirect location was given

Error message

redirecting but no redirect location was given

What it means

Error "redirecting but no redirect location was given" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/compact_index_client/http_fetcher.rb:41

      fetch(@base_uri + path, headers, REDIRECT_LIMIT)
    end

    private

    def fetch(uri, headers, redirects_remaining)
      response = @remote_fetcher.request(uri, Gem::Net::HTTP::Get) do |req|
        headers.each {|name, value| req[name] = value }
      end

      case response
      when Gem::Net::HTTPSuccess, Gem::Net::HTTPNotModified
        response
      when Gem::Net::HTTPMovedPermanently, Gem::Net::HTTPFound, Gem::Net::HTTPSeeOther,
           Gem::Net::HTTPTemporaryRedirect, Gem::Net::HTTPPermanentRedirect
        raise Gem::RemoteFetcher::FetchError.new("too many redirects", uri) if redirects_remaining.zero?

        location = response["Location"]
        raise Gem::RemoteFetcher::FetchError.new("redirecting but no redirect location was given", uri) unless location

        fetch(uri + location, headers, redirects_remaining - 1)
      when Gem::Net::HTTPRangeNotSatisfiable
        raise Gem::RemoteFetcher::FetchError.new("bad response #{response.message} #{response.code}", uri) unless headers.key?("Range")

        # The local cache is longer than the remote file, refetch it whole.
        fetch(uri, headers.except("Range"), redirects_remaining)
      else
        raise Gem::RemoteFetcher::FetchError.new("bad response #{response.message} #{response.code}", uri)
      end
    end
  end
end

View on GitHub (pinned to 86cbb817a3)

When it happens

Trigger: Thrown at lib/rubygems/compact_index_client/http_fetcher.rb:41 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23). Data as JSON: /api/errors/c22f7e6cb4640fbd. Report an issue: GitHub.