summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-07-20 09:10:33 +0900
committergit <svn-admin@ruby-lang.org>2023-07-25 06:23:23 +0000
commit0ae227ebe22bcec74fcd5fd6acd1b724ab0d8c16 (patch)
tree12481f11281669d923d49e4c68ad68869b1250ee
parenta23fe8e84d8c73e45062008b4d020d47161858f3 (diff)
[rubygems/rubygems] Also check Kernel.require for infinite loop
https://github.com/rubygems/rubygems/commit/961d9ac1bd
-rw-r--r--lib/bundler/rubygems_integration.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index dcd1108e66..3110d3358e 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -226,13 +226,14 @@ module Bundler
end
def replace_require(specs)
- return if ::Kernel.respond_to?(:no_warning_require)
+ kernel = (class << ::Kernel; self; end)
+
+ return if [kernel, ::Kernel].any?{|klass| klass.respond_to?(:no_warning_require)}
bundled_gems = %w[
abbrev observer getoptlong resolv-replace rinda
nkf syslog drb mutex_m csv base64
]
- kernel = (class << ::Kernel; self; end)
[kernel, ::Kernel].each do |kernel_class|
kernel_class.send(:alias_method, :no_warning_require, :require)
kernel_class.send(:define_method, :require) do |file|