diff --git a/lib/versioning/ruby/index.js b/lib/versioning/ruby/index.js
index 310817d04d8b5b644559cbc66eed1a2d58fa5614..3daecc2cce7107567c6933b0c8b2090eb69e8677 100644
--- a/lib/versioning/ruby/index.js
+++ b/lib/versioning/ruby/index.js
@@ -32,13 +32,17 @@ const isSingleVersion = range => {
 const isStable = version =>
   parseVersion(version).prerelease ? false : isVersion(version);
 
-const isValid = range => {
-  const { version, operator } = parseRange(range);
+const isValid = input =>
+  input
+    .split(',')
+    .map(piece => piece.trim())
+    .every(range => {
+      const { version, operator } = parseRange(range);
 
-  return operator
-    ? isVersion(version) && isValidOperator(operator)
-    : isVersion(version);
-};
+      return operator
+        ? isVersion(version) && isValidOperator(operator)
+        : isVersion(version);
+    });
 
 const matches = (version, range) => satisfies(version, range);
 const maxSatisfyingVersion = (versions, range) =>
diff --git a/test/versioning/ruby.spec.js b/test/versioning/ruby.spec.js
index 9d38a15e248de13174f74ed100c8273d639b3f0c..4998db47ebde06790ed829291e0e18ea8cb4c122 100644
--- a/test/versioning/ruby.spec.js
+++ b/test/versioning/ruby.spec.js
@@ -297,6 +297,10 @@ describe('semverRuby', () => {
       expect(semverRuby.isValid('~> 1.2.0-alpha.1')).toBeTruthy();
     });
 
+    it('returns true when range is valid', () => {
+      expect(semverRuby.isValid('>= 3.0.5, < 3.2')).toBeTruthy();
+    });
+
     it('returns false when version is invalid', () => {
       expect(semverRuby.isVersion()).toBeFalsy();
       expect(semverRuby.isVersion('')).toBeFalsy();