aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-07-19 16:35:41 +0900
committergit <svn-admin@ruby-lang.org>2023-07-25 06:23:21 +0000
commitf5e03ef31cde82b8d801d2d67eac4e9191dda2ca (patch)
treec840ee0b92ef3316e60fed0ed8a8283c820f49c5
parent70eeec0cad7daa56bee91967657d7dd86ca36e18 (diff)
downloadruby-f5e03ef31cde82b8d801d2d67eac4e9191dda2ca.tar.gz
[rubygems/rubygems] Warn if file is loaded without Gemfile
https://github.com/rubygems/rubygems/commit/bf59dcdad1
-rw-r--r--lib/bundler/rubygems_integration.rb31
1 files changed, 20 insertions, 11 deletions
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index 1bcfdf56ff..0d0d9f4837 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -225,23 +225,31 @@ module Bundler
end
end
- def reverse_rubygems_kernel_mixin
- # Disable rubygems' gem activation system
- if Gem.respond_to?(:discover_gems_on_require=)
- Gem.discover_gems_on_require = false
- else
- kernel = (class << ::Kernel; self; end)
- [kernel, ::Kernel].each do |k|
- if k.private_method_defined?(:gem_original_require)
- redefine_method(k, :require, k.instance_method(:gem_original_require))
+ def replace_require(specs)
+ 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|
+ redefine_method(kernel_class, :require) do |file|
+ if bundled_gems.include?(file)
+ unless specs.to_a.map(&:name).include?(file)
+ target_file = begin
+ Bundler.default_gemfile.basename
+ rescue GemfileNotFound
+ "inline Gemfile"
+ end
+ warn "#{file} is not part of the bundle." \
+ " Add it to your #{target_file}."
+ end
end
+ kernel_class.send(:gem_original_require, file)
end
end
end
def replace_gem(specs, specs_by_name)
- reverse_rubygems_kernel_mixin
-
executables = nil
kernel = (class << ::Kernel; self; end)
@@ -358,6 +366,7 @@ module Bundler
def replace_entrypoints(specs)
specs_by_name = add_default_gems_to(specs)
+ replace_require(specs)
replace_gem(specs, specs_by_name)
stub_rubygems(specs)
replace_bin_path(specs_by_name)