diff --git a/rbenv.d/exec/gem-rehash/rubygems_plugin.rb b/rbenv.d/exec/gem-rehash/rubygems_plugin.rb index 21d5ad9a..8d1df091 100644 --- a/rbenv.d/exec/gem-rehash/rubygems_plugin.rb +++ b/rbenv.d/exec/gem-rehash/rubygems_plugin.rb @@ -6,13 +6,32 @@ 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 = {}) + result = install_without_rbenv_rehash(root, definition, options) + begin + if result && Gem.default_path.include?(Bundler.bundle_path.to_s) + `rbenv rehash` + end + rescue + warn "rbenv: error in Bundler post-install hook (#{$!.class.name}: #{$!.message})" + 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