aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/version.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-04 00:29:40 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-04 00:29:40 +0000
commit5a90f9e8f84533e7859232895fc4bbe6b31cc771 (patch)
treee15086587f691a1f5bd3c7ddbfa38e825828caf6 /lib/rubygems/version.rb
parentf1321bd6e7c2d6b6a29a67074bad6f2742263921 (diff)
downloadruby-5a90f9e8f84533e7859232895fc4bbe6b31cc771.tar.gz
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.1.
Please see entries of 2.6.0 and 2.6.1 on https://github.com/rubygems/rubygems/blob/master/History.txt [fix GH-1270] Patch by @segiddins git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/version.rb')
-rw-r--r--lib/rubygems/version.rb28
1 files changed, 16 insertions, 12 deletions
diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb
index 54da49e8e8..2f6cfae6ed 100644
--- a/lib/rubygems/version.rb
+++ b/lib/rubygems/version.rb
@@ -219,7 +219,7 @@ class Gem::Version
def bump
@bump ||= begin
- segments = self.segments.dup
+ segments = self.segments
segments.pop while segments.any? { |s| String === s }
segments.pop if segments.size > 1
@@ -298,7 +298,7 @@ class Gem::Version
def release
@release ||= if prerelease?
- segments = self.segments.dup
+ segments = self.segments
segments.pop while segments.any? { |s| String === s }
self.class.new segments.join('.')
else
@@ -307,20 +307,14 @@ class Gem::Version
end
def segments # :nodoc:
-
- # segments is lazy so it can pick up version values that come from
- # old marshaled versions, which don't go through marshal_load.
-
- @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s|
- /^\d+$/ =~ s ? s.to_i : s
- end
+ _segments.dup
end
##
# A recommended version for use with a ~> Requirement.
def approximate_recommendation
- segments = self.segments.dup
+ segments = self.segments
segments.pop while segments.any? { |s| String === s }
segments.pop while segments.size > 2
@@ -339,8 +333,8 @@ class Gem::Version
return unless Gem::Version === other
return 0 if @version == other._version
- lhsegments = segments
- rhsegments = other.segments
+ lhsegments = _segments
+ rhsegments = other._segments
lhsize = lhsegments.size
rhsize = rhsegments.size
@@ -367,4 +361,14 @@ class Gem::Version
def _version
@version
end
+
+ def _segments
+ # segments is lazy so it can pick up version values that come from
+ # old marshaled versions, which don't go through marshal_load.
+ # since this version object is cached in @@all, its @segments should be frozen
+
+ @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s|
+ /^\d+$/ =~ s ? s.to_i : s
+ end.freeze
+ end
end