diff --git a/Library/Homebrew/utils/ruby.sh b/Library/Homebrew/utils/ruby.sh
index 3b07d3781651ae5fffef58c1313f6605a45416c2..841c3206724f45f6a8464252230059da14b0bcbd 100644
--- a/Library/Homebrew/utils/ruby.sh
+++ b/Library/Homebrew/utils/ruby.sh
@@ -9,6 +9,35 @@ test_ruby () {
               Gem::Version.new('$required_ruby_version').to_s.split('.').first(2)" 2>/dev/null
 }
 
+find_ruby() {
+  if [[ -n "$HOMEBREW_MACOS" ]]
+  then
+    echo "/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby"
+  else
+    IFS=$'\n' # Do word splitting on new lines only
+    for ruby_exec in $(which -a ruby) $(PATH=$HOMEBREW_PATH which -a ruby)
+    do
+      if test_ruby "$ruby_exec"; then
+        echo "$ruby_exec"
+        break
+      fi
+    done
+    IFS=$' \t\n' # Restore IFS to its default value
+  fi
+}
+
+usable_ruby() {
+  if [[ -n "$HOMEBREW_MACOS_SYSTEM_RUBY_NEW_ENOUGH" ]]
+  then
+    return 0
+  elif [[ -n "$HOMEBREW_RUBY_PATH" && -z "$HOMEBREW_FORCE_VENDOR_RUBY" ]] && test_ruby "$HOMEBREW_RUBY_PATH"
+  then
+    return 0
+  else
+    return 1
+  fi
+}
+
 setup-ruby-path() {
   local vendor_dir
   local vendor_ruby_root
@@ -16,7 +45,6 @@ setup-ruby-path() {
   local vendor_ruby_terminfo
   local vendor_ruby_latest_version
   local vendor_ruby_current_version
-  local usable_ruby
   # When bumping check if HOMEBREW_MACOS_SYSTEM_RUBY_NEW_ENOUGH (in brew.sh)
   # also needs to be changed.
   local required_ruby_version="2.6"
@@ -27,6 +55,16 @@ If there's no Homebrew Portable Ruby available for your processor:
 - make it first in your PATH
 - try again
 "
+  local upgrade_fail
+  local install_fail
+  if [[ -n $HOMEBREW_MACOS ]]
+  then
+    upgrade_fail="Failed to upgrade Homebrew Portable Ruby!"
+    install_fail="Failed to install Homebrew Portable Ruby (and your system version is too old)!"
+  else
+    upgrade_fail="Failed to upgrade Homebrew Portable Ruby!$advice"
+    install_fail="Failed to install Homebrew Portable Ruby and cannot find another Ruby $required_ruby_version!$advice"
+  fi
 
   vendor_dir="$HOMEBREW_LIBRARY/Homebrew/vendor"
   vendor_ruby_root="$vendor_dir/portable-ruby/current"
@@ -37,68 +75,27 @@ If there's no Homebrew Portable Ruby available for your processor:
 
   unset HOMEBREW_RUBY_PATH
 
-  if [[ "$HOMEBREW_COMMAND" == "vendor-install" ]]
-  then
-    return 0
-  fi
+  [[ "$HOMEBREW_COMMAND" == "vendor-install" ]] && return 0
 
   if [[ -x "$vendor_ruby_path" ]]
   then
     HOMEBREW_RUBY_PATH="$vendor_ruby_path"
-    [[ -z "$HOMEBREW_MACOS" ]] && TERMINFO_DIRS="$vendor_ruby_terminfo"
+    TERMINFO_DIRS="$vendor_ruby_terminfo"
     if [[ $vendor_ruby_current_version != "$vendor_ruby_latest_version" ]]
     then
-      if ! brew vendor-install ruby
-      then
-        if [[ -n "$HOMEBREW_MACOS" ]]
-        then
-          odie "Failed to upgrade Homebrew Portable Ruby!"
-        else
-          odie "Failed to upgrade Homebrew Portable Ruby!$advice"
-        fi
-      fi
+      brew vendor-install ruby || odie "$upgrade_fail"
     fi
   else
-    if [[ -n "$HOMEBREW_MACOS" ]]
-    then
-      HOMEBREW_RUBY_PATH="/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby"
-    else
-      IFS=$'\n' # Do word splitting on new lines only
-      for ruby_exec in $(which -a ruby) $(PATH=$HOMEBREW_PATH which -a ruby)
-      do
-        if test_ruby "$ruby_exec"; then
-          HOMEBREW_RUBY_PATH=$ruby_exec
-          break
-        fi
-      done
-      IFS=$' \t\n' # Restore IFS to its default value
-    fi
+    HOMEBREW_RUBY_PATH=$(find_ruby)
 
-    if [[ -n "$HOMEBREW_MACOS_SYSTEM_RUBY_NEW_ENOUGH" ]]
+    if [[ -z "$HOMEBREW_RUBY_PATH" || -n "$HOMEBREW_FORCE_VENDOR_RUBY" ]] || ! usable_ruby
     then
-      usable_ruby=true
-    elif [[ -n "$HOMEBREW_RUBY_PATH" && -z "$HOMEBREW_FORCE_VENDOR_RUBY" ]] && test_ruby "$HOMEBREW_RUBY_PATH"
-    then
-      usable_ruby=true
-    fi
-
-    if [[ -z "$HOMEBREW_RUBY_PATH" || -n "$HOMEBREW_FORCE_VENDOR_RUBY" || -z $usable_ruby ]]
-    then
-      brew vendor-install ruby
-      if [[ ! -x "$vendor_ruby_path" ]]
-      then
-        if [[ -n "$HOMEBREW_MACOS" ]]
-        then
-          odie "Failed to install Homebrew Portable Ruby (and your system version is too old)!"
-        else
-          odie "Failed to install Homebrew Portable Ruby and cannot find another Ruby $required_ruby_version!$advice"
-        fi
-      fi
+      brew vendor-install ruby || odie "$install_fail"
       HOMEBREW_RUBY_PATH="$vendor_ruby_path"
-      [[ -z "$HOMEBREW_MACOS" ]] && TERMINFO_DIRS="$vendor_ruby_terminfo"
+      TERMINFO_DIRS="$vendor_ruby_terminfo"
     fi
   fi
 
   export HOMEBREW_RUBY_PATH
-  export TERMINFO_DIRS
+  [[ -n "$HOMEBREW_LINUX" && -n "$TERMINFO_DIRS" ]] && export TERMINFO_DIRS
 }