summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-08-09 13:28:15 -0500
committerSamuel Giddins <segiddins@segiddins.me>2016-08-23 11:50:35 -0500
commit59ff9347f79db306898e7457c21a5375cb5e799f (patch)
tree7cfb83148b9c42ca92bf908fc554c1ed22ec16b6
parent8de41cb9b045c1897138ba5e2e1ae9ae5cdb3369 (diff)
downloadbundler-59ff9347f79db306898e7457c21a5375cb5e799f.tar.gz
[Definition] Only use RubyVersion objects to determine resolution behavior
-rw-r--r--lib/bundler/definition.rb26
1 files changed, 17 insertions, 9 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 121ef9c2c4..480a9e2b8d 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -62,6 +62,7 @@ module Bundler
@specs = nil
@ruby_version = ruby_version
+ @lockfile = lockfile
@lockfile_contents = String.new
@locked_bundler_version = nil
@locked_ruby_version = nil
@@ -94,11 +95,7 @@ module Bundler
@unlock[:gems] ||= []
@unlock[:sources] ||= []
- @unlock[:ruby] ||= if @ruby_version && @locked_ruby_version
- unless locked_ruby_version_object = RubyVersion.from_string(@locked_ruby_version)
- raise LockfileError, "Failed to create a `RubyVersion` object from " \
- "`#{@locked_ruby_version}` found in #{lockfile} -- try running `bundle update --ruby`."
- end
+ @unlock[:ruby] ||= if @ruby_version && locked_ruby_version_object
@ruby_version.diff(locked_ruby_version_object)
end
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
@@ -264,7 +261,7 @@ module Bundler
dependency_names -= pinned_spec_names(source.specs)
dependency_names.concat(source.unmet_deps).uniq!
end
- idx << Gem::Specification.new("ruby\0", RUBY_VERSION)
+ idx << Gem::Specification.new("ruby\0", RubyVersion.system.gem_version)
idx << Gem::Specification.new("rubygems\0", Gem::VERSION)
end
end
@@ -342,6 +339,17 @@ module Bundler
end
end
+ def locked_ruby_version_object
+ return unless @locked_ruby_version
+ @locked_ruby_version_object ||= begin
+ unless version = RubyVersion.from_string(@locked_ruby_version)
+ raise LockfileError, "Failed to create a `RubyVersion` object from " \
+ "`#{@locked_ruby_version}` found in #{@lockfile} -- try running `bundle update --ruby`."
+ end
+ version
+ end
+ end
+
def to_lock
out = String.new
@@ -734,9 +742,9 @@ module Bundler
# the metadata dependencies here
def expanded_dependencies
@expanded_dependencies ||= begin
- ruby_versions = [RUBY_VERSION]
- ruby_versions.concat(@ruby_version.versions) if @ruby_version
- ruby_versions << @locked_ruby_version if @locked_ruby_version && !@unlock[:ruby]
+ ruby_versions = RubyVersion.system.versions
+ ruby_versions += @ruby_version.versions if @ruby_version
+ ruby_versions += locked_ruby_version_object.versions if locked_ruby_version_object && !@unlock[:ruby]
metadata_dependencies = [
Dependency.new("ruby\0", ruby_versions),
Dependency.new("rubygems\0", Gem::VERSION),