diff --git a/lib/modules/datasource/datasource.ts b/lib/modules/datasource/datasource.ts
index 95d6abf947b9bc7ef358ba6b0c4e964ccaa8cd6e..a035be994a73bf1fce593d933f6ef7019eb71b49 100644
--- a/lib/modules/datasource/datasource.ts
+++ b/lib/modules/datasource/datasource.ts
@@ -1,6 +1,5 @@
 import { ExternalHostError } from '../../types/errors/external-host-error';
-import { Http } from '../../util/http';
-import type { HttpError } from '../../util/http';
+import { Http, HttpError } from '../../util/http';
 import type {
   DatasourceApi,
   DigestConfig,
@@ -35,22 +34,29 @@ export abstract class Datasource implements DatasourceApi {
   getDigest?(config: DigestConfig, newValue?: string): Promise<string | null>;
 
   // eslint-disable-next-line @typescript-eslint/no-empty-function
-  handleSpecificErrors(err: HttpError): void {}
+  handleHttpErrors(err: HttpError): void {}
 
-  protected handleGenericErrors(err: HttpError): never {
+  protected handleGenericErrors(err: Error): never {
     // istanbul ignore if: not easy testable with nock
     if (err instanceof ExternalHostError) {
       throw err;
     }
-    this.handleSpecificErrors(err);
-    if (err.response?.statusCode !== undefined) {
-      if (
-        err.response?.statusCode === 429 ||
-        (err.response?.statusCode >= 500 && err.response?.statusCode < 600)
-      ) {
-        throw new ExternalHostError(err);
+
+    if (err instanceof HttpError) {
+      this.handleHttpErrors(err);
+
+      const statusCode = err.response?.statusCode;
+      if (statusCode) {
+        if (statusCode === 429) {
+          throw new ExternalHostError(err);
+        }
+
+        if (statusCode >= 500 && statusCode < 600) {
+          throw new ExternalHostError(err);
+        }
       }
     }
+
     throw err;
   }
 }
diff --git a/lib/modules/datasource/ruby-version/index.spec.ts b/lib/modules/datasource/ruby-version/index.spec.ts
index 5b082be7e54a45b8f4d7a7cf27a8ca80dccaf869..b020219607ec8c1d2ece44ef8c205e6609f364bb 100644
--- a/lib/modules/datasource/ruby-version/index.spec.ts
+++ b/lib/modules/datasource/ruby-version/index.spec.ts
@@ -19,14 +19,16 @@ describe('modules/datasource/ruby-version/index', () => {
       expect(res).toMatchSnapshot();
     });
 
-    it('throws for empty result', async () => {
+    it('returns null for empty result', async () => {
       httpMock
         .scope('https://www.ruby-lang.org')
         .get('/en/downloads/releases/')
         .reply(200, {});
-      await expect(
-        getPkgReleases({ datasource, packageName: 'ruby' })
-      ).rejects.toThrow();
+      const res = await getPkgReleases({
+        datasource,
+        packageName: 'ruby',
+      });
+      expect(res).toBeNull();
     });
 
     it('throws for 404', async () => {
diff --git a/lib/modules/datasource/ruby-version/index.ts b/lib/modules/datasource/ruby-version/index.ts
index ac155f6bdb5ba9557034ca9c6b493fbd9eaf709b..d403681cd9257ffad87602953b8690099a9e960b 100644
--- a/lib/modules/datasource/ruby-version/index.ts
+++ b/lib/modules/datasource/ruby-version/index.ts
@@ -1,3 +1,4 @@
+import { logger } from '../../../logger';
 import { ExternalHostError } from '../../../types/errors/external-host-error';
 import { cache } from '../../../util/cache/package/decorator';
 import { parse } from '../../../util/html';
@@ -53,7 +54,8 @@ export class RubyVersionDatasource extends Datasource {
         }
       });
       if (!res.releases.length) {
-        throw new Error('Missing ruby releases');
+        logger.warn({ registryUrl }, 'Missing ruby releases');
+        return null;
       }
     } catch (err) {
       this.handleGenericErrors(err);
@@ -62,7 +64,7 @@ export class RubyVersionDatasource extends Datasource {
     return res;
   }
 
-  override handleSpecificErrors(err: HttpError): never | void {
+  override handleHttpErrors(err: HttpError): never | void {
     throw new ExternalHostError(err);
   }
 }
diff --git a/lib/modules/datasource/terraform-module/base.ts b/lib/modules/datasource/terraform-module/base.ts
index 1b8ac098e49f86f10e752e40e579e3a58144f189..405b6dcc501ab85fd49cf31298ca43609a150cbd 100644
--- a/lib/modules/datasource/terraform-module/base.ts
+++ b/lib/modules/datasource/terraform-module/base.ts
@@ -29,7 +29,7 @@ export abstract class TerraformDatasource extends Datasource {
     return `${ensureTrailingSlash(registryUrl)}.well-known/terraform.json`;
   }
 
-  override handleSpecificErrors(err: HttpError): void {
+  override handleHttpErrors(err: HttpError): void {
     const failureCodes = ['EAI_AGAIN'];
     // istanbul ignore if
     if (failureCodes.includes(err.code)) {