aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/utils/ruby.sh57
-rw-r--r--Library/brew.sh25
2 files changed, 62 insertions, 20 deletions
diff --git a/Library/Homebrew/utils/ruby.sh b/Library/Homebrew/utils/ruby.sh
new file mode 100644
index 000000000..4b8e58f01
--- /dev/null
+++ b/Library/Homebrew/utils/ruby.sh
@@ -0,0 +1,57 @@
+setup-ruby-path() {
+ local vendor_dir
+ local vendor_ruby_current_version
+ local vendor_ruby_path
+ local ruby_version_major
+
+ vendor_dir="$HOMEBREW_LIBRARY/Homebrew/vendor"
+ vendor_ruby_current_version="$vendor_dir/portable-ruby/current"
+ vendor_ruby_path="$vendor_ruby_current_version/bin/ruby"
+
+ if [[ -z "$HOMEBREW_DEVELOPER" ]]
+ then
+ unset HOMEBREW_RUBY_PATH
+ fi
+
+ if [[ -z "$HOMEBREW_RUBY_PATH" && "$HOMEBREW_COMMAND" != "vendor-install" ]]
+ then
+ if [[ -x "$vendor_ruby_path" ]]
+ then
+ HOMEBREW_RUBY_PATH="$vendor_ruby_path"
+
+ if [[ $(readlink "$vendor_ruby_current_version") != "$(<"$vendor_dir/portable-ruby-version")" ]]
+ then
+ if ! brew vendor-install ruby --quiet
+ then
+ onoe "Failed to upgrade vendor Ruby."
+ fi
+ fi
+ else
+ if [[ -n "$HOMEBREW_OSX" ]]
+ then
+ HOMEBREW_RUBY_PATH="/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby"
+ else
+ HOMEBREW_RUBY_PATH="$(which ruby)"
+ fi
+
+ if [[ -n "$HOMEBREW_RUBY_PATH" ]]
+ then
+ ruby_version_major="$("$HOMEBREW_RUBY_PATH" --version)"
+ ruby_version_major="${ruby_version_major#ruby }"
+ ruby_version_major="${ruby_version_major%%.*}"
+ fi
+
+ if [[ "$ruby_version_major" != "2" ]]
+ then
+ brew vendor-install ruby --quiet
+ if [[ ! -x "$vendor_ruby_path" ]]
+ then
+ odie "Failed to install vendor Ruby."
+ fi
+ HOMEBREW_RUBY_PATH="$vendor_ruby_path"
+ fi
+ fi
+ fi
+
+ export HOMEBREW_RUBY_PATH
+}
diff --git a/Library/brew.sh b/Library/brew.sh
index c1606a4ff..3e137323c 100644
--- a/Library/brew.sh
+++ b/Library/brew.sh
@@ -64,31 +64,12 @@ fi
unset GEM_HOME
unset GEM_PATH
-if [[ -z "$HOMEBREW_DEVELOPER" ]]
-then
- unset HOMEBREW_RUBY_PATH
-fi
-
HOMEBREW_SYSTEM="$(uname -s)"
case "$HOMEBREW_SYSTEM" in
Darwin) HOMEBREW_OSX="1";;
Linux) HOMEBREW_LINUX="1";;
esac
-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
-
HOMEBREW_CURL="/usr/bin/curl"
if [[ -n "$HOMEBREW_OSX" ]]
then
@@ -131,7 +112,6 @@ export HOMEBREW_LIBRARY
export HOMEBREW_VERSION
export HOMEBREW_CACHE
export HOMEBREW_CELLAR
-export HOMEBREW_RUBY_PATH
export HOMEBREW_SYSTEM
export HOMEBREW_CURL
export HOMEBREW_PROCESSOR
@@ -231,6 +211,11 @@ fi
# Hide shellcheck complaint:
# shellcheck source=/dev/null
+source "$HOMEBREW_LIBRARY/Homebrew/utils/ruby.sh"
+setup-ruby-path
+
+# Hide shellcheck complaint:
+# shellcheck source=/dev/null
source "$HOMEBREW_LIBRARY/Homebrew/utils/analytics.sh"
setup-analytics
report-analytics-screenview-command