diff options
Diffstat (limited to 'lib/bundler/source/path/installer.rb')
-rw-r--r-- | lib/bundler/source/path/installer.rb | 19 |
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 |