diff options
author | Andre Arko <andre@arko.net> | 2015-12-13 21:01:02 +0800 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2015-12-14 16:25:45 -0800 |
commit | f96d84f8bbcf427fbd4db3e7581d8d3fc8aa73f1 (patch) | |
tree | de7c6c06e69d3cea8c125fdd98131555299c5e14 | |
parent | d62cd93131b2dda47e498f3c6b7d4edc25ff1840 (diff) | |
download | bundler-resolve-running-ruby.tar.gz |
use the running Ruby version, not the Gemfile oneresolve-running-ruby
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.
-rw-r--r-- | lib/bundler/definition.rb | 3 | ||||
-rw-r--r-- | 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) |