summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2014-03-31 15:24:06 +0800
committerAndre Arko <andre@arko.net>2014-03-31 15:24:06 +0800
commit7e417e943f741e99f17a6aa727605412966eea05 (patch)
tree3dec14afad77aebf25aea3f4fce462179829f338
parent8592487aebe9aac85f338a99bb18f819673e8265 (diff)
downloadbundler-7e417e943f741e99f17a6aa727605412966eea05.tar.gz
per-gem tmp, copy EVERYTHING rubygems installed
-rw-r--r--lib/bundler/fetcher.rb4
-rw-r--r--lib/bundler/source/rubygems.rb13
2 files changed, 9 insertions, 8 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb
index be11e3680e..e503fa2c0d 100644
--- a/lib/bundler/fetcher.rb
+++ b/lib/bundler/fetcher.rb
@@ -54,7 +54,7 @@ module Bundler
def download_gem_from_uri(spec, uri)
spec.fetch_platform
- download_path = Bundler.requires_sudo? ? Bundler.tmp : Bundler.rubygems.gem_dir
+ download_path = Bundler.requires_sudo? ? Bundler.tmp(spec.full_name) : Bundler.rubygems.gem_dir
gem_path = "#{Bundler.rubygems.gem_dir}/cache/#{spec.full_name}.gem"
FileUtils.mkdir_p("#{download_path}/cache")
@@ -62,7 +62,7 @@ module Bundler
if Bundler.requires_sudo?
Bundler.mkdir_p "#{Bundler.rubygems.gem_dir}/cache"
- Bundler.sudo "mv #{Bundler.tmp}/cache/#{spec.full_name}.gem #{gem_path}"
+ Bundler.sudo "mv #{Bundler.tmp(spec.full_name)}/cache/#{spec.full_name}.gem #{gem_path}"
end
gem_path
diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb
index c4a5849fa8..02367fa7f1 100644
--- a/lib/bundler/source/rubygems.rb
+++ b/lib/bundler/source/rubygems.rb
@@ -79,7 +79,7 @@ module Bundler
path = cached_gem(spec)
if Bundler.requires_sudo?
- install_path = Bundler.tmp
+ install_path = Bundler.tmp(spec.full_name)
bin_path = install_path.join("bin")
else
install_path = Bundler.rubygems.gem_dir
@@ -99,13 +99,14 @@ module Bundler
# SUDO HAX
if Bundler.requires_sudo?
- Bundler.mkdir_p "#{Bundler.rubygems.gem_dir}/gems"
- Bundler.mkdir_p "#{Bundler.rubygems.gem_dir}/specifications"
- Bundler.sudo "cp -R #{Bundler.tmp}/gems/#{spec.full_name} #{Bundler.rubygems.gem_dir}/gems/"
- Bundler.sudo "cp -R #{Bundler.tmp}/specifications/#{spec.full_name}.gemspec #{Bundler.rubygems.gem_dir}/specifications/"
+ Gem::REPOSITORY_SUBDIRECTORIES.each do |name|
+ Bundler.mkdir_p File.join(Bundler.rubygems.gem_dir, name)
+ Bundler.sudo "cp -R #{install_path}/#{name}/* #{Bundler.rubygems.gem_dir}/#{name}/"
+ end
+
spec.executables.each do |exe|
Bundler.mkdir_p Bundler.system_bindir
- Bundler.sudo "cp -R #{Bundler.tmp}/bin/#{exe} #{Bundler.system_bindir}"
+ Bundler.sudo "cp -R #{install_path}/bin/#{exe} #{Bundler.system_bindir}/"
end
end
installed_spec.loaded_from = "#{Bundler.rubygems.gem_dir}/specifications/#{spec.full_name}.gemspec"