diff options
| author | Alyssa Ross | 2016-09-19 16:59:33 +0100 | 
|---|---|---|
| committer | Alyssa Ross | 2016-09-19 19:09:55 +0100 | 
| commit | 4c773725c7683ec624863459ac3b4a3237a7382f (patch) | |
| tree | f72e57f7d01e99e096de40d8d854a7a8a5336f5b | |
| parent | 13f08a2bd4ff3aec13423fa5bb62b6ef08ffa0c4 (diff) | |
| download | brew-4c773725c7683ec624863459ac3b4a3237a7382f.tar.bz2 | |
Use user GEM_HOME for installing gems
Save the value of GEM_HOME before unsetting it,
and resetting it when setting up a gem environment.
Fixes #944.
| -rw-r--r-- | Library/Homebrew/brew.sh | 4 | ||||
| -rw-r--r-- | Library/Homebrew/utils.rb | 13 | 
2 files changed, 14 insertions, 3 deletions
diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 0fadecaba..e8d2fe469 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -59,6 +59,10 @@ then    odie "Cowardly refusing to continue at this prefix: $HOMEBREW_PREFIX"  fi +# Save value to use for installing gems +export GEM_OLD_HOME="$GEM_HOME" +export GEM_OLD_PATH="$GEM_PATH" +  # Users may have these set, pointing the system Ruby  # at non-system gem paths  unset GEM_HOME diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index cda67a8c6..8121b7146 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -270,17 +270,24 @@ module Homebrew    end    def self.install_gem_setup_path!(name, version = nil, executable = name) -    require "rubygems" +    # Respect user's preferences for where gems should be installed. +    ENV["GEM_HOME"] = ENV["GEM_OLD_HOME"].to_s +    ENV["GEM_HOME"] = Gem.user_dir if ENV["GEM_HOME"].empty? +    ENV["GEM_PATH"] = ENV["GEM_OLD_PATH"] unless ENV["GEM_OLD_PATH"].to_s.empty? + +    # Make rubygems notice env changes. +    Gem.clear_paths +    Gem::Specification.reset      # Add Gem binary directory and (if missing) Ruby binary directory to PATH.      path = ENV["PATH"].split(File::PATH_SEPARATOR)      path.unshift(RUBY_BIN) if which("ruby") != RUBY_PATH -    path.unshift("#{Gem.user_dir}/bin") +    path.unshift("#{Gem.dir}/bin")      ENV["PATH"] = path.join(File::PATH_SEPARATOR)      if Gem::Specification.find_all_by_name(name, version).empty?        ohai "Installing or updating '#{name}' gem" -      install_args = %W[--no-ri --no-rdoc --user-install #{name}] +      install_args = %W[--no-ri --no-rdoc #{name}]        install_args << "--version" << version if version        # Do `gem install [...]` without having to spawn a separate process or  | 
