diff --git a/rbenv.d/exec/gem-rehash/rubygems_plugin.rb b/rbenv.d/exec/gem-rehash/rubygems_plugin.rb index 8d1df091..0f718b13 100644 --- a/rbenv.d/exec/gem-rehash/rubygems_plugin.rb +++ b/rbenv.d/exec/gem-rehash/rubygems_plugin.rb @@ -15,14 +15,20 @@ if defined?(Bundler::Installer) && Bundler::Installer.respond_to?(:install) class << self alias install_without_rbenv_rehash install def install(root, definition, options = {}) - result = install_without_rbenv_rehash(root, definition, options) begin - if result && Gem.default_path.include?(Bundler.bundle_path.to_s) - `rbenv rehash` + 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