Merge pull request #806 from sstephenson/bundle-rehash

Avoid running `rbenv rehash` multiple times during `bundle install`
This commit is contained in:
Mislav Marohnić 2015-10-25 18:36:20 +01:00
commit 074161f9c1

View file

@ -6,13 +6,38 @@ hook = lambda do |installer|
`rbenv rehash`
end
rescue
warn "rbenv: error in gem-rehash (#{$!})"
warn "rbenv: error in gem-rehash (#{$!.class.name}: #{$!.message})"
end
end
begin
Gem.post_install(&hook)
Gem.post_uninstall(&hook)
rescue
warn "rbenv: error installing gem-rehash hooks (#{$!})"
if defined?(Bundler::Installer) && Bundler::Installer.respond_to?(:install)
Bundler::Installer.class_eval do
class << self
alias install_without_rbenv_rehash install
def install(root, definition, options = {})
begin
if Gem.default_path.include?(Bundler.bundle_path.to_s)
bin_dir = Gem.bindir(Bundler.bundle_path.to_s)
bins_before = File.exist?(bin_dir) ? Dir.entries(bin_dir).size : 2
end
rescue
warn "rbenv: error in Bundler post-install hook (#{$!.class.name}: #{$!.message})"
end
result = install_without_rbenv_rehash(root, definition, options)
if bin_dir && File.exist?(bin_dir) && Dir.entries(bin_dir).size > bins_before
`rbenv rehash`
end
result
end
end
end
else
begin
Gem.post_install(&hook)
Gem.post_uninstall(&hook)
rescue
warn "rbenv: error installing gem-rehash hooks (#{$!.class.name}: #{$!.message})"
end
end