summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-04-06 20:22:17 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-04-07 12:03:14 -0500
commit4e1ff77ec1148c3170e746d42e77c07d6c1cb19a (patch)
treeeaa744aee9ee3f6c241605fa78e1674bede0b554
parent1b333a6768ce8708c7d01bffc27a46952e5b6011 (diff)
downloadbundler-4e1ff77ec1148c3170e746d42e77c07d6c1cb19a.tar.gz
[RubygemsIntegration] Remove special case when caller is gem executable
Behavior does not depend upon it
-rw-r--r--lib/bundler/rubygems_integration.rb16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index 666d36a346..51655dbeea 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -320,18 +320,22 @@ module Bundler
end
end
+ def binstubs_call_gem?
+ true
+ end
+
def replace_gem(specs, specs_by_name)
reverse_rubygems_kernel_mixin
- executables = nil
+ executables = specs.map(&:executables).flatten if binstubs_call_gem?
kernel = (class << ::Kernel; self; end)
[kernel, ::Kernel].each do |kernel_class|
redefine_method(kernel_class, :gem) do |dep, *reqs|
- executables ||= specs.map(&:executables).flatten
- if executables.include? File.basename(caller.first.split(":").first)
+ if executables && executables.include?(File.basename(caller.first.split(":").first))
break
end
+
reqs.pop if reqs.last.is_a?(Hash)
unless dep.respond_to?(:name) && dep.respond_to?(:requirement)
@@ -796,6 +800,12 @@ module Bundler
activated_spec_names = runtime.requested_specs.map(&:to_spec).sort_by(&:name)
[Gemdeps.new(runtime), activated_spec_names]
end
+
+ if provides?(">= 2.5.2")
+ def binstubs_call_gem?
+ false
+ end
+ end
end
end