summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/installer.rb18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 18170230df..0477b47035 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -675,14 +675,16 @@ class Gem::Installer
@build_args = options[:build_args]
- @gem_home = @install_dir
- @gem_home ||= if options[:user_install]
- Gem.user_dir
- elsif !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
- say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
- Gem.user_dir
- else
- Gem.dir
+ @gem_home = @install_dir || Gem.dir
+
+ # `--build-root` overrides `--user-install` and auto-user-install
+ if @build_root.nil? && @install_dir.nil?
+ if options[:user_install]
+ @gem_home = Gem.user_dir
+ elsif !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
+ say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
+ @gem_home = Gem.user_dir
+ end
end
# If the user has asked for the gem to be installed in a directory that is