diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-08-09 13:28:15 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-08-23 11:50:35 -0500 |
commit | 59ff9347f79db306898e7457c21a5375cb5e799f (patch) | |
tree | 7cfb83148b9c42ca92bf908fc554c1ed22ec16b6 | |
parent | 8de41cb9b045c1897138ba5e2e1ae9ae5cdb3369 (diff) | |
download | bundler-59ff9347f79db306898e7457c21a5375cb5e799f.tar.gz |
[Definition] Only use RubyVersion objects to determine resolution behavior
-rw-r--r-- | lib/bundler/definition.rb | 26 |
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), |