diff --git a/lib/manager/bundler/artifacts.js b/lib/manager/bundler/artifacts.js
index 8994a36363eee2e310e8c74981f191e5514e92d0..998db43eae03a69eff01efdc38aa4a1d8f8289ed 100644
--- a/lib/manager/bundler/artifacts.js
+++ b/lib/manager/bundler/artifacts.js
@@ -154,9 +154,15 @@ async function getArtifacts(
     ) {
       throw new Error('bundler-fs');
     }
+    if (
+      err.stdout &&
+      err.stdout.includes('Please supply credentials for this source')
+    ) {
+      throw new Error('bundler-credentials');
+    }
     logger.info(
       { err, message: err.message },
-      'Failed to generate bundler.lock (unknown error)'
+      'Failed to generate Gemfile.lock (unknown error)'
     );
     throw new Error('bundler-unknown');
   }
diff --git a/lib/workers/branch/index.js b/lib/workers/branch/index.js
index 747edf5fddb7293518f17f41300a62e04fb9841e..cbd4e0b5d7ddc97deb7696ec9c45aaefe972cd08 100644
--- a/lib/workers/branch/index.js
+++ b/lib/workers/branch/index.js
@@ -327,6 +327,10 @@ async function processBranch(branchConfig, prHourlyLimitReached, packageFiles) {
       logger.warn(
         'It is necessary to run Renovate in gitFs mode - contact your bot administrator'
       );
+    } else if (err.message === 'bundler-credentials') {
+      logger.warn(
+        'Bundler credentials are necessary in order to generate Gemfile.lock updates'
+      );
     } else if (err.message === 'bundler-unknown') {
       logger.warn('Unknown bundler error');
     } else if (