From f96d84f8bbcf427fbd4db3e7581d8d3fc8aa73f1 Mon Sep 17 00:00:00 2001 From: Andre Arko Date: Sun, 13 Dec 2015 21:01:02 +0800 Subject: use the running Ruby version, not the Gemfile one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the Gemfile has a version listed, Bundler will throw an exception rather than run. If the Gemfile has no version, we should avoid resolving to gems that can’t be installed on this version of Ruby. --- lib/bundler/definition.rb | 3 +-- lib/bundler/resolver.rb | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 7acd78ea0b..39b2c6dad0 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -194,8 +194,7 @@ module Bundler last_resolve else # Run a resolve against the locally available gems - requested_ruby_version = ruby_version.version if ruby_version - last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, requested_ruby_version) + last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, Bundler.ruby_version) end end end diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb index edced0077f..95bf9b33e8 100644 --- a/lib/bundler/resolver.rb +++ b/lib/bundler/resolver.rb @@ -127,14 +127,15 @@ module Bundler @source ||= first.source end - def for?(platform, required_ruby_version) - if spec = @specs[platform] - if required_ruby_version && spec_required_ruby_version = spec.required_ruby_version - spec_required_ruby_version.satisfied_by?(required_ruby_version) - else - true - end + def for?(platform, required_ruby) + return true if required_ruby.nil? + return false if @specs[platform].nil? + + if @specs[platform].respond_to?(:required_ruby_version) + spec_ruby = @specs[platform].required_ruby_version end + + spec_ruby.nil? ? true : spec_ruby.satisfied_by?(required_ruby) end def to_s @@ -192,7 +193,7 @@ module Bundler @search_for = {} @base_dg = Molinillo::DependencyGraph.new @base.each {|ls| @base_dg.add_vertex(ls.name, Dependency.new(ls.name, ls.version), true) } - @ruby_version = ruby_version ? Gem::Version.create(ruby_version) : nil + @ruby_version = ruby_version && ruby_version.gem_version end def start(requirements) @@ -272,7 +273,8 @@ module Bundler [] end end - search.select {|sg| sg.for?(platform, @ruby_version) }.each {|sg| sg.activate_platform(platform) } + search.select {|sg| sg.for?(platform, @ruby_version) }. + each {|sg| sg.activate_platform(platform) } end def name_for(dependency) -- cgit v1.2.1