[rubygems/rubygems] Install plugins to user directory

Fixes the `Gem::FilePermissionError` without the privilege.
Initialize `@plugins_dir` to the user gem directory, when
installing with `--user` option.

https://github.com/rubygems/rubygems/commit/21a71ac769
This commit is contained in:
Nobuyoshi Nakada 2020-07-09 23:38:34 +09:00 коммит произвёл Hiroshi SHIBATA
Родитель 6c71033ac3
Коммит ebf008b9ae
2 изменённых файлов: 23 добавлений и 0 удалений

Просмотреть файл

@ -184,6 +184,7 @@ class Gem::Installer
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)
check_that_user_bin_dir_is_in_path
end
end

Просмотреть файл

@ -776,6 +776,28 @@ gem 'other', version
assert File.exist?(plugin_path), 'plugin not written to install_dir'
end
def test_generate_plugins_with_user_install
spec = quick_gem 'a' do |s|
write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
io.write "puts __FILE__"
end
s.files += %w[lib/rubygems_plugin.rb]
end
util_build_gem spec
File.chmod(0555, Gem.plugindir)
system_path = File.join(Gem.plugindir, 'a_plugin.rb')
user_path = File.join(Gem.plugindir(Gem.user_dir), 'a_plugin.rb')
installer = util_installer spec, Gem.dir, :user
assert_equal spec, installer.install
assert !File.exist?(system_path), 'plugin not written to user plugins_dir'
assert File.exist?(user_path), 'plugin not written to user plugins_dir'
end
def test_keeps_plugins_up_to_date
# NOTE: version a-2 is already installed by setup hooks