diff options
author | Grey Baker <greysteil@gmail.com> | 2017-09-09 12:30:14 +0100 |
---|---|---|
committer | Grey Baker <greysteil@gmail.com> | 2017-09-09 12:59:57 +0100 |
commit | 3a42475d26a21a11fec2e8411762a6af6549c82f (patch) | |
tree | 973f21bfa5ce90ebf12af3ac83e2f07a2e3de90d | |
parent | f42dd8724b188fd7c09d9995735e83793f35792e (diff) | |
download | bundler-3a42475d26a21a11fec2e8411762a6af6549c82f.tar.gz |
Consider prerelease versions last if in Gemfile as non-prerelease
-rw-r--r-- | lib/bundler/resolver.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb index cc87bcb0cb..fcd893fa77 100644 --- a/lib/bundler/resolver.rb +++ b/lib/bundler/resolver.rb @@ -42,6 +42,7 @@ module Bundler end def start(requirements) + @initial_requirements = requirements verify_gemfile_dependencies_are_found!(requirements) dg = @resolver.resolve(requirements, @base_dg) dg.map(&:payload). @@ -100,6 +101,15 @@ module Bundler search = @search_for[dependency] ||= begin index = index_for(dependency) results = index.search(dependency, @base[dependency.name]) + + inital_requirement = @initial_requirements.find {|req| req.name == dependency.name } + if inital_requirement && !inital_requirement.requirement.prerelease? + # Move prereleases to the beginning of the list, so they're considered + # last during resolution. + pre, results = results.partition {|spec| spec.version.prerelease? } + results = pre + results + end + if vertex = @base_dg.vertex_named(dependency.name) locked_requirement = vertex.payload.requirement end |