summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2010-07-11 17:22:58 -0300
committerSantiago Pastorino <santiago@wyeworks.com>2010-07-12 16:48:58 -0300
commitd3101db631d844790522edaf2e515e47d0f5e1c0 (patch)
tree5d5647e356e1b716dbdd36067ebdbf679ded30b1
parent3bd94c24e8308a99cb53669156681d2d3fdc9b48 (diff)
downloadbundler-d3101db631d844790522edaf2e515e47d0f5e1c0.tar.gz
Fixes Install#generate_bin when sudo is required and packages have executables
-rw-r--r--lib/bundler/source.rb15
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)