diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 1b801edc8ecfc13e82722b1fcc4a8736ab3e98c7..0ff8bb9aa7a7b09d2be6f66b1715ebfca092f6cb 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -32,29 +32,6 @@ require 'mkmf'
 LIBDIR = RbConfig::CONFIG['libdir']
 INCLUDEDIR = RbConfig::CONFIG['includedir']
 
-if ENV.key? 'GRPC_ROOT'
-  GRPC_ROOT = ENV['GRPC_ROOT']
-else
-  grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
-  if File.exist?(File.join(grpc_root, 'include/grpc/grpc.h'))
-    GRPC_ROOT = grpc_root
-  else
-    GRPC_ROOT = nil
-  end
-end
-
-if ENV.key? 'CONFIG'
-  GRPC_CONFIG = ENV['CONFIG']
-else
-  GRPC_CONFIG = 'opt'
-end
-
-if (ENV.key? 'GRPC_LIB_DIR') && (!GRPC_ROOT.nil?)
-  GRPC_LIB_DIR = File.join(GRPC_ROOT, ENV['GRPC_LIB_DIR'])
-else
-  GRPC_LIB_DIR = File.join(File.join(GRPC_ROOT, 'libs'), GRPC_CONFIG)
-end
-
 HEADER_DIRS = [
   # Search /opt/local (Mac source install)
   '/opt/local/include',
@@ -77,12 +54,26 @@ LIB_DIRS = [
   LIBDIR
 ]
 
-unless GRPC_ROOT.nil?
-  HEADER_DIRS.unshift File.join(GRPC_ROOT, 'include')
-  LIB_DIRS.unshift GRPC_LIB_DIR
-  unless File.exist?(File.join(GRPC_LIB_DIR, 'libgrpc.a'))
-    system("make -C #{GRPC_ROOT} static_c CONFIG=#{GRPC_CONFIG}")
+# Check to see if GRPC_ROOT is defined or available
+grpc_root = ENV['GRPC_ROOT']
+if grpc_root.nil?
+  r = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
+  grpc_root = r if File.exist?(File.join(r, 'include/grpc/grpc.h'))
+end
+
+# When grpc_root is available attempt to build the grpc core.
+unless grpc_root.nil?
+  grpc_config = ENV['GRPC_CONFIG'] || 'opt'
+  if ENV.key?('GRPC_LIB_DIR')
+    grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR'])
+  else
+    grpc_lib_dir = File.join(File.join(grpc_root, 'libs'), grpc_config)
+  end
+  unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a'))
+    system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}")
   end
+  HEADER_DIRS.unshift File.join(grpc_root, 'include')
+  LIB_DIRS.unshift grpc_lib_dir
 end
 
 def crash(msg)
diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec
index 3ddb7fac18fd60ba235003863661f396fa191191..319da9470ab93ae2526b2f80c6291e147288217d 100755
--- a/src/ruby/grpc.gemspec
+++ b/src/ruby/grpc.gemspec
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
   s.license       = 'BSD-3-Clause'
 
   s.required_ruby_version = '>= 2.0.0'
-  s.requirements << 'libgrpc ~> 0.6.0 needs to be installed'
+  s.requirements << 'libgrpc ~> 0.9.1 needs to be installed'
 
   s.files         = `git ls-files`.split("\n")
   s.test_files    = `git ls-files -- spec/*`.split("\n")
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 8588bfd80803584b6bb411ab14f79547ef39b59d..53265c792c463ddf2c95a63bd1e13923b0422299 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.9.2'
+  VERSION = '0.9.3'
 end