summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/installer.rb1
-rw-r--r--test/rubygems/test_gem_installer.rb22
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 0639672137..33171a8eb9 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -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
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 49ecc549e9..e984c7079c 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -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