summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-10-05 20:03:49 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-04-15 09:21:04 -0500
commit0a516eaf5bb7a9bb50189012e2552d4d3087ae60 (patch)
tree33bbf8822880f8b8a60d1cc2409b4e44e5f81a4b
parentbcd38141ca9714fc3434f6bc2d15fba16d38f5d9 (diff)
downloadbundler-seg-spec-set-perf.tar.gz
[RubyGemsExt] Speed up Dependency#to_lockseg-spec-set-perf
-rw-r--r--lib/bundler/rubygems_ext.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/bundler/rubygems_ext.rb b/lib/bundler/rubygems_ext.rb
index 7293e7cfc7..a0f8fa848b 100644
--- a/lib/bundler/rubygems_ext.rb
+++ b/lib/bundler/rubygems_ext.rb
@@ -151,7 +151,7 @@ module Gem
def to_lock
out = String.new(" #{name}")
- unless requirement == Gem::Requirement.default
+ unless requirement.none?
reqs = requirement.requirements.map {|o, v| "#{o} #{v}" }.sort.reverse
out << " (#{reqs.join(", ")})"
end
@@ -169,11 +169,16 @@ module Gem
end
class Requirement
- # Backport of performance enhancement added to Rubygems 1.4
+ # Backport of performance enhancement added to RubyGems 1.4
def none?
- @none ||= (to_s == ">= 0")
+ # note that it might be tempting to replace with with RubyGems 2.0's
+ # improved implementation. Don't. It requires `DefaultRequirement` to be
+ # defined, and more importantantly, these overrides are not used when the
+ # running RubyGems defines these methods
+ to_s == ">= 0"
end unless allocate.respond_to?(:none?)
+ # Backport of performance enhancement added to RubyGems 2.2
def exact?
return false unless @requirements.size == 1
@requirements[0][0] == "="