diff options
Diffstat (limited to 'lib/rubygems/dependency.rb')
-rw-r--r-- | lib/rubygems/dependency.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/rubygems/dependency.rb b/lib/rubygems/dependency.rb index ecfd0b7909..bbdab7ccfa 100644 --- a/lib/rubygems/dependency.rb +++ b/lib/rubygems/dependency.rb @@ -317,13 +317,16 @@ class Gem::Dependency end def to_spec - matches = self.to_specs - - active = matches.find { |spec| spec && spec.activated? } + matches = self.to_specs.compact + active = matches.find { |spec| spec.activated? } return active if active - matches.delete_if { |spec| spec.nil? || spec.version.prerelease? } unless prerelease? + return matches.first if prerelease? + + # Move prereleases to the end of the list for >= 0 requirements + pre, matches = matches.partition { |spec| spec.version.prerelease? } + matches += pre if requirement == Gem::Requirement.default matches.first end |