summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2015-12-13 21:01:02 +0800
committerAndre Arko <andre@arko.net>2015-12-14 16:25:45 -0800
commitf96d84f8bbcf427fbd4db3e7581d8d3fc8aa73f1 (patch)
treede7c6c06e69d3cea8c125fdd98131555299c5e14
parentd62cd93131b2dda47e498f3c6b7d4edc25ff1840 (diff)
downloadbundler-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.rb3
-rw-r--r--lib/bundler/resolver.rb20
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)