diff --git a/rubygems-plugin/rubygems_plugin.rb b/rubygems-plugin/rubygems_plugin.rb index 8e363a3..57c8783 100644 --- a/rubygems-plugin/rubygems_plugin.rb +++ b/rubygems-plugin/rubygems_plugin.rb @@ -1,11 +1,20 @@ -# Yes borrowed from rbenv. Couldn't take my mind off that implementation - -Gem.post_install do |installer| +module ReshimInstaller + def install(options) + super + # We don't know which gems were installed, so always reshim. + `asdf reshim ruby` + end +end - if installer.spec.executables.any? && installer.bin_dir == Gem.default_bindir - installer.spec.executables.each do |executable| - `asdf reshim ruby #{RUBY_VERSION} bin/#{executable}` +if defined?(Bundler::Installer) + Bundler::Installer.prepend ReshimInstaller +else + maybe_reshim = lambda do |installer| + # If any gems with executables were installed or uninstalled, reshim. + if installer.spec.executables.any? + `asdf reshim ruby` end end - + Gem.post_install &maybe_reshim + Gem.post_uninstall &maybe_reshim end