diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2010-07-11 17:22:58 -0300 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2010-07-12 16:48:58 -0300 |
commit | d3101db631d844790522edaf2e515e47d0f5e1c0 (patch) | |
tree | 5d5647e356e1b716dbdd36067ebdbf679ded30b1 | |
parent | 3bd94c24e8308a99cb53669156681d2d3fdc9b48 (diff) | |
download | bundler-d3101db631d844790522edaf2e515e47d0f5e1c0.tar.gz |
Fixes Install#generate_bin when sudo is required and packages have executables
-rw-r--r-- | lib/bundler/source.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/bundler/source.rb b/lib/bundler/source.rb index d4b8c4c24a..7febf26941 100644 --- a/lib/bundler/source.rb +++ b/lib/bundler/source.rb @@ -373,12 +373,25 @@ module Bundler class Installer < Gem::Installer def initialize(spec, options = {}) @spec = spec - @bin_dir = "#{Gem.dir}/bin" + @bin_dir = Bundler.requires_sudo? ? "#{Bundler.tmp}/bin" : "#{Gem.dir}/bin" @gem_dir = spec.full_gem_path @wrappers = options[:wrappers] || true @env_shebang = options[:env_shebang] || true @format_executable = options[:format_executable] || false end + + def generate_bin + return if spec.executables.nil? || spec.executables.empty? + + FileUtils.mkdir_p("#{Bundler.tmp}/bin") if Bundler.requires_sudo? + super + if Bundler.requires_sudo? + Bundler.mkdir_p "#{Gem.dir}/bin" + spec.executables.each do |exe| + Bundler.sudo "cp -R #{Bundler.tmp}/bin/#{exe} #{Gem.dir}/bin/" + end + end + end end def install(spec) |