diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-04 00:29:40 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-04 00:29:40 +0000 |
commit | 5a90f9e8f84533e7859232895fc4bbe6b31cc771 (patch) | |
tree | e15086587f691a1f5bd3c7ddbfa38e825828caf6 /lib/rubygems/version.rb | |
parent | f1321bd6e7c2d6b6a29a67074bad6f2742263921 (diff) | |
download | ruby-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.rb | 28 |
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 |