[rubygems/rubygems] Make the user installation less exceptional
The main purpose is to put handling of user installation into the same place as e.g. handling the --build-root option handling. There is no reason why the --build-root option should not prefix also paths used for user installation. Please note that the `util_installer` in `test_generate_plugins_with_user_install` enforced the `:install_dir`, which is against what user install is about. https://github.com/rubygems/rubygems/commit/0b10cb41aa
This commit is contained in:
parent
acd428c823
commit
42cf1307c3
@ -189,12 +189,6 @@ class Gem::Installer
|
|||||||
@package.prog_mode = options[:prog_mode]
|
@package.prog_mode = options[:prog_mode]
|
||||||
@package.data_mode = options[:data_mode]
|
@package.data_mode = options[:data_mode]
|
||||||
|
|
||||||
if options[:user_install]
|
|
||||||
@gem_home = Gem.user_dir
|
|
||||||
@bin_dir = Gem.bindir gem_home unless options[:bin_dir]
|
|
||||||
@plugins_dir = Gem.plugindir(gem_home)
|
|
||||||
end
|
|
||||||
|
|
||||||
if @gem_home == Gem.user_dir
|
if @gem_home == Gem.user_dir
|
||||||
# If we get here, then one of the following likely happened:
|
# If we get here, then one of the following likely happened:
|
||||||
# - `--user-install` was specified
|
# - `--user-install` was specified
|
||||||
@ -673,22 +667,27 @@ class Gem::Installer
|
|||||||
@env_shebang = options[:env_shebang]
|
@env_shebang = options[:env_shebang]
|
||||||
@force = options[:force]
|
@force = options[:force]
|
||||||
@install_dir = options[:install_dir]
|
@install_dir = options[:install_dir]
|
||||||
@gem_home = options[:install_dir] || Gem.dir
|
|
||||||
@plugins_dir = Gem.plugindir(@gem_home)
|
|
||||||
@ignore_dependencies = options[:ignore_dependencies]
|
@ignore_dependencies = options[:ignore_dependencies]
|
||||||
@format_executable = options[:format_executable]
|
@format_executable = options[:format_executable]
|
||||||
@wrappers = options[:wrappers]
|
@wrappers = options[:wrappers]
|
||||||
@only_install_dir = options[:only_install_dir]
|
@only_install_dir = options[:only_install_dir]
|
||||||
|
|
||||||
# If the user has asked for the gem to be installed in a directory that is
|
@bin_dir = options[:bin_dir]
|
||||||
# the system gem directory, then use the system bin directory, else create
|
|
||||||
# (or use) a new bin dir under the gem_home.
|
|
||||||
@bin_dir = options[:bin_dir] || Gem.bindir(gem_home)
|
|
||||||
@development = options[:development]
|
@development = options[:development]
|
||||||
@build_root = options[:build_root]
|
@build_root = options[:build_root]
|
||||||
|
|
||||||
@build_args = options[:build_args]
|
@build_args = options[:build_args]
|
||||||
|
|
||||||
|
@gem_home = @install_dir
|
||||||
|
@gem_home ||= options[:user_install] ? Gem.user_dir : Gem.dir
|
||||||
|
|
||||||
|
# If the user has asked for the gem to be installed in a directory that is
|
||||||
|
# the system gem directory, then use the system bin directory, else create
|
||||||
|
# (or use) a new bin dir under the gem_home.
|
||||||
|
@bin_dir ||= Gem.bindir(@gem_home)
|
||||||
|
|
||||||
|
@plugins_dir = Gem.plugindir(@gem_home)
|
||||||
|
|
||||||
unless @build_root.nil?
|
unless @build_root.nil?
|
||||||
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ""))
|
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ""))
|
||||||
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ""))
|
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ""))
|
||||||
|
@ -821,7 +821,7 @@ gem 'other', version
|
|||||||
File.chmod(0o555, Gem.plugindir)
|
File.chmod(0o555, Gem.plugindir)
|
||||||
system_path = File.join(Gem.plugindir, "a_plugin.rb")
|
system_path = File.join(Gem.plugindir, "a_plugin.rb")
|
||||||
user_path = File.join(Gem.plugindir(Gem.user_dir), "a_plugin.rb")
|
user_path = File.join(Gem.plugindir(Gem.user_dir), "a_plugin.rb")
|
||||||
installer = util_installer spec, Gem.dir, :user
|
installer = Gem::Installer.at spec.cache_file, :user_install => true, :force => true
|
||||||
|
|
||||||
assert_equal spec, installer.install
|
assert_equal spec, installer.install
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user