1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-17 07:43:46 -05:00

Move gem-rehash monkey patch (#1541)

The `rubygems_plugin.rb` file doesn't get loaded until after `Bundler::Installer.install` is called, so target `Bundler::Installer#install` to fix invocation order issues.

Co-authored-by: Mislav Marohnić <git@mislav.net>
This commit is contained in:
benmelz
2023-12-09 15:14:40 -05:00
committed by GitHub
parent d10388a052
commit 325abac17d

View File

@@ -10,11 +10,14 @@ hook = lambda do |installer|
end
end
if defined?(Bundler::Installer) && Bundler::Installer.respond_to?(:install) && !Bundler::Installer.respond_to?(:install_without_rbenv_rehash)
if defined?(Bundler::Installer) &&
Bundler::Installer.private_method_defined?(:install) &&
!Bundler::Installer.private_method_defined?(:install_without_rbenv_rehash)
Bundler::Installer.class_eval do
class << self
private
alias install_without_rbenv_rehash install
def install(root, definition, options = {})
def install(options)
begin
if Gem.default_path.include?(Bundler.bundle_path.to_s)
bin_dir = Gem.bindir(Bundler.bundle_path.to_s)
@@ -24,7 +27,7 @@ if defined?(Bundler::Installer) && Bundler::Installer.respond_to?(:install) && !
warn "rbenv: error in Bundler post-install hook (#{$!.class.name}: #{$!.message})"
end
result = install_without_rbenv_rehash(root, definition, options)
result = install_without_rbenv_rehash(options)
if bin_dir && File.exist?(bin_dir) && Dir.entries(bin_dir).size > bins_before
`rbenv rehash`
@@ -32,7 +35,6 @@ if defined?(Bundler::Installer) && Bundler::Installer.respond_to?(:install) && !
result
end
end
end
else
begin
Gem.post_install(&hook)