diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts
index f5ac5641b3911a3f73c5fb1e75cfca4b6822f3d8..0f5364ed77d124a47638972c1a695b052eaa5789 100644
--- a/lib/datasource/rubygems/get.ts
+++ b/lib/datasource/rubygems/get.ts
@@ -43,9 +43,10 @@ const fetch = async ({ dependency, registry, path }) => {
   const retry = { retries: retriable() };
   const headers = getHeaders();
 
-  const name = `/${dependency}.json`;
-  const baseUrl = `${registry}/${path}`;
+  const name = `${path}/${dependency}.json`;
+  const baseUrl = registry;
 
+  logger.trace({ dependency }, `RubyGems lookup request: ${baseUrl} ${name}`);
   const response = (await got(name, { retry, json, baseUrl, headers })) || {
     body: undefined,
   };
@@ -57,6 +58,7 @@ export const getDependency = async ({
   dependency,
   registry,
 }): Promise<ReleaseResult | null> => {
+  logger.debug({ dependency }, 'RubyGems lookup for dependency');
   try {
     const info = await fetch({ dependency, registry, path: INFO_PATH });
     if (!info) {
diff --git a/lib/datasource/rubygems/retriable.ts b/lib/datasource/rubygems/retriable.ts
index cc2baceb7bc439aa45714618406c5b326206a716..e6743aec849c8daa9727b0775c6970a09f8cf60f 100644
--- a/lib/datasource/rubygems/retriable.ts
+++ b/lib/datasource/rubygems/retriable.ts
@@ -8,20 +8,15 @@ import {
   SERVICE_UNAVAILABLE,
 } from './errors';
 
-const RETRY_AFTER = 600;
-const NUMBER_OF_RETRIES = 5;
+const DEFAULT_BANNED_RETRY_AFTER = 600;
+const NUMBER_OF_RETRIES = 2;
 
-const getDelayStep = (): number =>
-  parseInt(process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP || '1000', 10);
-
-const toMs = (value: number): number => value * getDelayStep();
 const getBannedDelay = (retryAfter: string): number =>
-  (parseInt(retryAfter, 10) || RETRY_AFTER) + 1;
+  (parseInt(retryAfter, 10) || DEFAULT_BANNED_RETRY_AFTER) + 1;
 const getDefaultDelay = (count: number): number =>
-  (NUMBER_OF_RETRIES * getDelayStep()) / count;
+  +(NUMBER_OF_RETRIES / count).toFixed(3);
 
-const getDelayMessage = (delay: any): string => `Retry in ${delay} seconds.`;
-const getErrorMessage = (status: number) => {
+const getErrorMessage = (status: number): string => {
   // istanbul ignore next
   switch (status) {
     case UNAUTHORIZED:
@@ -49,8 +44,10 @@ export default (numberOfRetries = NUMBER_OF_RETRIES): got.RetryFunction => (
   }
 
   const { headers, statusCode } = err;
+
+  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
   const isBanned = [TOO_MANY_REQUEST, SERVICE_UNAVAILABLE].includes(statusCode);
-  const delay = isBanned
+  const delaySec = isBanned
     ? getBannedDelay(headers['retry-after'])
     : getDefaultDelay(numberOfRetries);
 
@@ -58,10 +55,9 @@ export default (numberOfRetries = NUMBER_OF_RETRIES): got.RetryFunction => (
   numberOfRetries--;
 
   const errorMessage = getErrorMessage(statusCode);
-  const delayMessage = getDelayMessage(delay);
-  const message = `${errorMessage} ${delayMessage}`;
+  const message = `${errorMessage} Retry in ${delaySec} seconds.`;
 
   logger.info(message);
 
-  return toMs(delay);
+  return delaySec * 1000;
 };
diff --git a/test/datasource/rubygems/retriable.spec.ts b/test/datasource/rubygems/retriable.spec.ts
index 463fe41477ff5b1f5b832877b07747c6cf1c5216..cb9d96f0742ff8e0256e0c8444827dc79d13f0b7 100644
--- a/test/datasource/rubygems/retriable.spec.ts
+++ b/test/datasource/rubygems/retriable.spec.ts
@@ -1,12 +1,6 @@
 import retriable from '../../../lib/datasource/rubygems/retriable';
 
 describe('datasource/rubygems/retriable', () => {
-  const { RENOVATE_RUBYGEMS_RETRY_DELAY_STEP } = process.env;
-
-  beforeEach(() => {
-    process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP = '1';
-  });
-
   it('returns 0 when numberOfRetries equals 0', () => {
     expect(retriable(0)(null, null)).toEqual(0);
   });
@@ -17,25 +11,21 @@ describe('datasource/rubygems/retriable', () => {
         statusCode: 429,
         headers: { 'retry-after': '5' },
       })
-    ).toEqual(6);
+    ).toEqual(6000);
 
     expect(
       retriable(1)(null, {
         statusCode: 503,
         headers: { 'retry-after': '9' },
       })
-    ).toEqual(10);
+    ).toEqual(10000);
   });
 
   it('returns default delay if request is not banned', () => {
-    expect(retriable(1)(null, { statusCode: 500 })).toEqual(5);
+    expect(retriable(1)(null, { statusCode: 500 })).toEqual(2000);
   });
 
   it('uses default numberOfRetries', () => {
-    expect(retriable()(null, { statusCode: 500 })).toEqual(1);
-  });
-
-  afterEach(() => {
-    process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP = RENOVATE_RUBYGEMS_RETRY_DELAY_STEP;
+    expect(retriable()(null, { statusCode: 500 })).toEqual(1000);
   });
 });