diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-08-10 13:28:43 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-08-23 11:50:35 -0500 |
commit | b37eef329ca8d30fa3b7df6438d5aff6c1991264 (patch) | |
tree | c2dfd5b576b1582447c0cfc7b51ec494a86216e0 /lib | |
parent | 59ff9347f79db306898e7457c21a5375cb5e799f (diff) | |
download | bundler-b37eef329ca8d30fa3b7df6438d5aff6c1991264.tar.gz |
Fix resolving when the gemfile has a ruby patch requirement
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/definition.rb | 20 | ||||
-rw-r--r-- | lib/bundler/ruby_version.rb | 5 |
2 files changed, 21 insertions, 4 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 480a9e2b8d..b3bb0dc1ae 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -261,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", RubyVersion.system.gem_version) + idx << Gem::Specification.new("ruby\0", RubyVersion.system.to_gem_version_with_patchlevel) idx << Gem::Specification.new("rubygems\0", Gem::VERSION) end end @@ -742,9 +742,21 @@ module Bundler # the metadata dependencies here def expanded_dependencies @expanded_dependencies ||= begin - 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] + ruby_versions = [] + add_ruby_versions = proc do |ruby_version| + break unless ruby_version + if ruby_version.patchlevel + ruby_versions << ruby_version.to_gem_version_with_patchlevel + else + ruby_versions += ruby_version.versions.map {|v| "~> #{v}.0" } + end + end + add_ruby_versions.call(@ruby_version) + if ruby_versions.empty? || !@ruby_version.exact? + add_ruby_versions.call(RubyVersion.system) + add_ruby_versions.call(locked_ruby_version_object) unless @unlock[:ruby] + end + metadata_dependencies = [ Dependency.new("ruby\0", ruby_versions), Dependency.new("rubygems\0", Gem::VERSION), diff --git a/lib/bundler/ruby_version.rb b/lib/bundler/ruby_version.rb index 9321f94c23..8c050c6d31 100644 --- a/lib/bundler/ruby_version.rb +++ b/lib/bundler/ruby_version.rb @@ -128,6 +128,11 @@ module Bundler end end + def exact? + return @exact if defined?(@exact) + @exact = versions.all? {|v| Gem::Requirement.create(v).exact? } + end + private def matches?(requirements, version) |