diff --git a/lib/manager/bundler/extract.js b/lib/manager/bundler/extract.js
index 9346a3c13ea92ecb193b4502243f30b8dde42157..79675b82d0170423dcb2898ab50fc07c1d941d71 100644
--- a/lib/manager/bundler/extract.js
+++ b/lib/manager/bundler/extract.js
@@ -10,31 +10,41 @@ async function extractPackageFile(content, fileName) {
     registryUrls: [],
     deps: [],
   };
-  const delimeter =
-    content.split('"').length > content.split("'").length ? '"' : "'";
-  if (fileName) {
-    logger.debug(
-      { fileName },
-      'Using delimeter ' + delimeter + ' to parse ' + fileName
-    );
-  }
   const lines = content.split('\n');
+  const delimiters = ['"', "'"];
   for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {
     const line = lines[lineNumber];
-    const sourceMatch = line.match(
-      new RegExp(`^source ${delimeter}([^${delimeter}]+)${delimeter}\\s*$`)
-    );
+    let sourceMatch;
+    for (const delimiter of delimiters) {
+      sourceMatch =
+        sourceMatch ||
+        line.match(
+          new RegExp(`^source ${delimiter}([^${delimiter}]+)${delimiter}\\s*$`)
+        );
+    }
     if (sourceMatch) {
       res.registryUrls.push(sourceMatch[1]);
     }
-    const rubyMatch = line.match(
-      new RegExp(`^ruby ${delimeter}([^${delimeter}]+)${delimeter}`)
-    );
+    let rubyMatch;
+    for (const delimiter of delimiters) {
+      rubyMatch =
+        rubyMatch ||
+        line.match(
+          new RegExp(`^ruby ${delimiter}([^${delimiter}]+)${delimiter}`)
+        );
+    }
     if (rubyMatch) {
       res.compatibility = { ruby: rubyMatch[1] };
     }
-    const gemMatchRegex = `^gem ${delimeter}([^${delimeter}]+)${delimeter}(,\\s+${delimeter}([^${delimeter}]+)${delimeter}){0,2}`;
-    const gemMatch = line.match(new RegExp(gemMatchRegex));
+    let gemMatch;
+    let gemDelimiter;
+    for (const delimiter of delimiters) {
+      const gemMatchRegex = `^gem ${delimiter}([^${delimiter}]+)${delimiter}(,\\s+${delimiter}([^${delimiter}]+)${delimiter}){0,2}`;
+      if (line.match(new RegExp(gemMatchRegex))) {
+        gemDelimiter = delimiter;
+        gemMatch = gemMatch || line.match(new RegExp(gemMatchRegex));
+      }
+    }
     if (gemMatch) {
       const dep = {
         depName: gemMatch[1],
@@ -42,8 +52,8 @@ async function extractPackageFile(content, fileName) {
       };
       if (gemMatch[3]) {
         dep.currentValue = gemMatch[0]
-          .substring(`gem ${delimeter}${dep.depName}${delimeter},`.length)
-          .replace(new RegExp(delimeter, 'g'), '')
+          .substring(`gem ${gemDelimiter}${dep.depName}${gemDelimiter},`.length)
+          .replace(new RegExp(gemDelimiter, 'g'), '')
           .trim();
         if (!isValid(dep.currentValue)) {
           dep.skipReason = 'invalid-value';
@@ -83,30 +93,32 @@ async function extractPackageFile(content, fileName) {
         );
       }
     }
-    const sourceBlockMatch = line.match(
-      new RegExp(`^source\\s+${delimeter}(.*?)${delimeter}\\s+do`)
-    );
-    if (sourceBlockMatch) {
-      const repositoryUrl = sourceBlockMatch[1];
-      const sourceLineNumber = lineNumber;
-      let sourceContent = '';
-      let sourceLine = '';
-      while (lineNumber < lines.length && sourceLine !== 'end') {
-        lineNumber += 1;
-        sourceLine = lines[lineNumber];
-        if (sourceLine !== 'end') {
-          sourceContent += sourceLine.replace(/^ {2}/, '') + '\n';
+    for (const delimiter of delimiters) {
+      const sourceBlockMatch = line.match(
+        new RegExp(`^source\\s+${delimiter}(.*?)${delimiter}\\s+do`)
+      );
+      if (sourceBlockMatch) {
+        const repositoryUrl = sourceBlockMatch[1];
+        const sourceLineNumber = lineNumber;
+        let sourceContent = '';
+        let sourceLine = '';
+        while (lineNumber < lines.length && sourceLine !== 'end') {
+          lineNumber += 1;
+          sourceLine = lines[lineNumber];
+          if (sourceLine !== 'end') {
+            sourceContent += sourceLine.replace(/^ {2}/, '') + '\n';
+          }
+        }
+        const sourceRes = await extractPackageFile(sourceContent);
+        if (sourceRes) {
+          res.deps = res.deps.concat(
+            sourceRes.deps.map(dep => ({
+              ...dep,
+              registryUrls: [repositoryUrl],
+              lineNumber: dep.lineNumber + sourceLineNumber + 1,
+            }))
+          );
         }
-      }
-      const sourceRes = await extractPackageFile(sourceContent);
-      if (sourceRes) {
-        res.deps = res.deps.concat(
-          sourceRes.deps.map(dep => ({
-            ...dep,
-            registryUrls: [repositoryUrl],
-            lineNumber: dep.lineNumber + sourceLineNumber + 1,
-          }))
-        );
       }
     }
     const platformsMatch = line.match(/^platforms\s+(.*?)\s+do/);
diff --git a/test/manager/bundler/_fixtures/Gemfile.sourceGroup b/test/manager/bundler/_fixtures/Gemfile.sourceGroup
index 0ba9edb79a09a56f704ee8f90aa03923bbfd4150..f5fe900d31752681027558c55e898555197b4f6a 100644
--- a/test/manager/bundler/_fixtures/Gemfile.sourceGroup
+++ b/test/manager/bundler/_fixtures/Gemfile.sourceGroup
@@ -1,9 +1,9 @@
 source "https://rubygems.org"
-ruby "~> 1.5.3"
+ruby '~> 1.5.3'
 
-source "https://gems.example.com" do
+source 'https://gems.example.com' do
   gem "some_internal_gem"
-  gem "another_internal_gem"
+  gem 'another_internal_gem'
 end
 
 platforms :ruby do
@@ -12,6 +12,6 @@ platforms :ruby do
 end
 
 group :development, :optional => true do
-  gem "wirble"
+  gem 'wirble'
   gem "faker"
 end