summaryrefslogtreecommitdiff
path: root/lib/bundler/source/path/installer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/source/path/installer.rb')
-rw-r--r--lib/bundler/source/path/installer.rb19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/bundler/source/path/installer.rb b/lib/bundler/source/path/installer.rb
index 6f264489fb..3b368816c0 100644
--- a/lib/bundler/source/path/installer.rb
+++ b/lib/bundler/source/path/installer.rb
@@ -7,31 +7,34 @@ module Bundler
def initialize(spec, options = {})
@spec = spec
- @tmp_bin_dir = "#{Bundler.tmp(spec.full_name)}/bin"
- @gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin"
- @bin_dir = Bundler.requires_sudo? ? @tmp_bin_dir : @gem_bin_dir
@gem_dir = Bundler.rubygems.path(spec.full_gem_path)
@wrappers = options[:wrappers] || true
@env_shebang = options[:env_shebang] || true
@format_executable = options[:format_executable] || false
@build_args = options[:build_args] || Bundler.rubygems.build_args
+ @gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin"
+
+ if Bundler.requires_sudo?
+ @tmp_dir = Bundler.tmp(spec.full_name).to_s
+ @bin_dir = "#{@tmp_dir}/bin"
+ else
+ @bin_dir = @gem_bin_dir
+ end
end
def generate_bin
return if spec.executables.nil? || spec.executables.empty?
- if Bundler.requires_sudo?
- FileUtils.mkdir_p(@tmp_bin_dir) unless File.exist?(@tmp_bin_dir)
- end
-
super
if Bundler.requires_sudo?
Bundler.mkdir_p @gem_bin_dir
spec.executables.each do |exe|
- Bundler.sudo "cp -R #{@tmp_bin_dir}/#{exe} #{@gem_bin_dir}"
+ Bundler.sudo "cp -R #{@bin_dir}/#{exe} #{@gem_bin_dir}"
end
end
+ ensure
+ Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
end
end