From 4eaa40ae1f432f3fd49fef628928579cb7eba600 Mon Sep 17 00:00:00 2001
From: Mike McQuaid <mike@mikemcquaid.com>
Date: Wed, 10 Aug 2016 20:06:14 +0100
Subject: [PATCH] Enable vendored Ruby 2.0.

---
 Library/Homebrew/cmd/vendor-install.sh  |  6 ++++-
 Library/Homebrew/manpages/brew.1.md.erb |  4 ++++
 Library/Homebrew/utils/ruby.sh          | 29 -------------------------
 share/doc/homebrew/Common-Issues.md     |  2 +-
 share/doc/homebrew/brew.1.html          |  2 ++
 share/man/man1/brew.1                   |  4 ++++
 6 files changed, 16 insertions(+), 31 deletions(-)

diff --git a/Library/Homebrew/cmd/vendor-install.sh b/Library/Homebrew/cmd/vendor-install.sh
index 90a3393824..ca64789bce 100644
--- a/Library/Homebrew/cmd/vendor-install.sh
+++ b/Library/Homebrew/cmd/vendor-install.sh
@@ -8,6 +8,7 @@ source "$HOMEBREW_LIBRARY/Homebrew/utils/lock.sh"
 
 VENDOR_DIR="$HOMEBREW_LIBRARY/Homebrew/vendor"
 
+# Built from https://github.com/Homebrew/homebrew-portable.
 if [[ -n "$HOMEBREW_OSX" ]]
 then
   if [[ "$HOMEBREW_PROCESSOR" = "Intel" ]]
@@ -185,7 +186,10 @@ homebrew-vendor-install() {
 
   if [[ -z "$VENDOR_URL" || -z "$VENDOR_SHA" ]]
   then
-    odie "Cannot find a vendored version of $VENDOR_NAME."
+    odie <<-EOS
+Cannot find a vendored version of $VENDOR_NAME for your $HOMEBREW_PROCESSOR
+processor on $HOMEBREW_PRODUCT!
+EOS
   fi
 
   VENDOR_VERSION="$(<"$VENDOR_DIR/portable-$VENDOR_NAME-version")"
diff --git a/Library/Homebrew/manpages/brew.1.md.erb b/Library/Homebrew/manpages/brew.1.md.erb
index affac9295e..fff2bf7e58 100644
--- a/Library/Homebrew/manpages/brew.1.md.erb
+++ b/Library/Homebrew/manpages/brew.1.md.erb
@@ -151,6 +151,10 @@ can take several different forms:
     directories. TextMate can handle this correctly in project mode, but many
     editors will do strange things in this case.
 
+  * `HOMEBREW_FORCE_VENDOR_RUBY`:
+    If set, Homebrew will always use its vendored, relocatable Ruby 2.0 version
+    even if the system version of Ruby is >=2.0.
+
   * `HOMEBREW_GITHUB_API_TOKEN`:
     A personal access token for the GitHub API, which you can create at
     <https://github.com/settings/tokens>. If set, GitHub will allow you a
diff --git a/Library/Homebrew/utils/ruby.sh b/Library/Homebrew/utils/ruby.sh
index 98fd34c1b4..81bc16835f 100644
--- a/Library/Homebrew/utils/ruby.sh
+++ b/Library/Homebrew/utils/ruby.sh
@@ -1,33 +1,4 @@
-original-setup-ruby-path() {
-  if [[ -z "$HOMEBREW_DEVELOPER" ]]
-  then
-    unset HOMEBREW_RUBY_PATH
-  fi
-
-  if [[ -z "$HOMEBREW_RUBY_PATH" ]]
-  then
-    if [[ -n "$HOMEBREW_OSX" ]]
-    then
-      HOMEBREW_RUBY_PATH="/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby"
-    else
-      HOMEBREW_RUBY_PATH="$(which ruby)"
-      if [[ -z "$HOMEBREW_RUBY_PATH" ]]
-      then
-        odie "No Ruby found, cannot proceed."
-      fi
-    fi
-  fi
-
-  export HOMEBREW_RUBY_PATH
-}
-
 setup-ruby-path() {
-  if [[ -z "$HOMEBREW_USE_VENDOR_RUBY" && -z "$HOMEBREW_FORCE_VENDOR_RUBY" ]]
-  then
-    original-setup-ruby-path
-    return
-  fi
-
   local vendor_dir
   local vendor_ruby_current_version
   local vendor_ruby_path
diff --git a/share/doc/homebrew/Common-Issues.md b/share/doc/homebrew/Common-Issues.md
index 1efc167931..70da993456 100644
--- a/share/doc/homebrew/Common-Issues.md
+++ b/share/doc/homebrew/Common-Issues.md
@@ -38,7 +38,7 @@ invalid multibyte escape: /^\037\235/
 
 In the past, Homebrew assumed that `/usr/bin/ruby` was Ruby 1.8. On OS X 10.9, it is now Ruby 2.0. There are various incompatibilities between the two versions, so if you upgrade to OS X 10.9 while using a sufficiently old version of Homebrew, you will encounter errors.
 
-The incompatibilities have been addressed in more recent versions of Homebrew, and it does not make assumptions about `/usr/bin/ruby`, instead it uses the executable inside OS X's Ruby 1.8 framework.
+The incompatibilities have been addressed in more recent versions of Homebrew, and it does not make assumptions about `/usr/bin/ruby`, instead it uses the executable inside OS X's Ruby framework or a vendored Ruby.
 
 To recover from this situation, do the following:
 
diff --git a/share/doc/homebrew/brew.1.html b/share/doc/homebrew/brew.1.html
index b9b6bf3c00..1f9c3d54cb 100644
--- a/share/doc/homebrew/brew.1.html
+++ b/share/doc/homebrew/brew.1.html
@@ -554,6 +554,8 @@ several formulae in the same directory.</p>
 <p><em>Note:</em> <code>brew edit</code> will open all of Homebrew as discontinuous files and
 directories. TextMate can handle this correctly in project mode, but many
 editors will do strange things in this case.</p></dd>
+<dt><code>HOMEBREW_FORCE_VENDOR_RUBY</code></dt><dd><p>If set, Homebrew will always use its vendored, relocatable Ruby 2.0 version
+even if the system version of Ruby is >=2.0.</p></dd>
 <dt><code>HOMEBREW_GITHUB_API_TOKEN</code></dt><dd><p>A personal access token for the GitHub API, which you can create at
 <a href="https://github.com/settings/tokens" data-bare-link="true">https://github.com/settings/tokens</a>. If set, GitHub will allow you a
 greater number of API requests. See
diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1
index f3c5f38995..d39a35463d 100644
--- a/share/man/man1/brew.1
+++ b/share/man/man1/brew.1
@@ -764,6 +764,10 @@ If set, Homebrew will use this editor when editing a single formula, or several
 \fINote:\fR \fBbrew edit\fR will open all of Homebrew as discontinuous files and directories\. TextMate can handle this correctly in project mode, but many editors will do strange things in this case\.
 .
 .TP
+\fBHOMEBREW_FORCE_VENDOR_RUBY\fR
+If set, Homebrew will always use its vendored, relocatable Ruby 2\.0 version even if the system version of Ruby is >=2\.0\.
+.
+.TP
 \fBHOMEBREW_GITHUB_API_TOKEN\fR
 A personal access token for the GitHub API, which you can create at \fIhttps://github\.com/settings/tokens\fR\. If set, GitHub will allow you a greater number of API requests\. See \fIhttps://developer\.github\.com/v3/#rate\-limiting\fR for more information\. Homebrew uses the GitHub API for features such as \fBbrew search\fR\.
 .
-- 
GitLab