diff --git a/src/ruby/.rspec b/src/ruby/.rspec
index 60a4aad5a25f3e3c0e82e80f5fccfcbec818f48c..dd579f7a1373cdf7f67110df61c8f3e8de4be97b 100755
--- a/src/ruby/.rspec
+++ b/src/ruby/.rspec
@@ -1 +1,2 @@
 -I.
+--require spec_helper
diff --git a/src/ruby/Rakefile b/src/ruby/Rakefile
index afb354e922826738a9401bd606d9cccad2b6c960..02af9a84b8e6d2337cecfbd3d15f6cd99d6793a9 100755
--- a/src/ruby/Rakefile
+++ b/src/ruby/Rakefile
@@ -26,6 +26,7 @@ namespace :suite do
   SPEC_SUITES.each do |suite|
     desc "Run all specs in the #{suite[:title]} spec suite"
     RSpec::Core::RakeTask.new(suite[:id]) do |t|
+      ENV['COVERAGE_NAME'] = suite[:id].to_s
       spec_files = []
       suite[:files].each { |f| spec_files += Dir[f] } if suite[:files]
 
diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec
index ae48213c8f44535833861ce5081dc52bc5d5dd0e..c633579102531d5f43c73b56ffb628a917000f31 100755
--- a/src/ruby/grpc.gemspec
+++ b/src/ruby/grpc.gemspec
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
   s.add_dependency 'logging', '~> 1.8'
   s.add_dependency 'minitest', '~> 5.4'  # reqd for interop tests
 
+  s.add_development_dependency 'simplecov', '~> 0.9'
   s.add_development_dependency 'bundler', '~> 1.9'
   s.add_development_dependency 'rake', '~> 10.4'
   s.add_development_dependency 'rake-compiler', '~> 0.9'
diff --git a/src/ruby/spec/spec_helper.rb b/src/ruby/spec/spec_helper.rb
index 837d2fc42a1baad733ccde8cd42e3f432565581a..101165c146fb083075391843f04472a13129bc09 100644
--- a/src/ruby/spec/spec_helper.rb
+++ b/src/ruby/spec/spec_helper.rb
@@ -35,14 +35,18 @@ $LOAD_PATH.unshift(spec_dir)
 $LOAD_PATH.unshift(lib_dir)
 $LOAD_PATH.uniq!
 
-require 'faraday'
+# set up coverage
+require 'simplecov'
+SimpleCov.start do
+  add_filter 'spec'
+  add_filter 'bin'
+  SimpleCov.command_name ENV['COVERAGE_NAME']
+end if ENV['COVERAGE_NAME']
+
 require 'rspec'
 require 'logging'
 require 'rspec/logging_helper'
 
-# Allow Faraday to support test stubs
-Faraday::Adapter.load_middleware(:test)
-
 # Configure RSpec to capture log messages for each test. The output from the
 # logs will be stored in the @log_output variable. It is a StringIO instance.
 RSpec.configure do |config|