diff options
-rw-r--r-- | lib/bundler/definition.rb | 21 | ||||
-rw-r--r-- | spec/install/gems/flex_spec.rb | 10 | ||||
-rw-r--r-- | spec/runtime/platform_spec.rb | 1 |
3 files changed, 19 insertions, 13 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index a5780d3b2a..3e5186039a 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -82,7 +82,11 @@ module Bundler @lockfile_contents = Bundler.read_file(lockfile) @locked_gems = LockfileParser.new(@lockfile_contents) @locked_platforms = @locked_gems.platforms - @platforms = @locked_platforms.dup + if Bundler.settings[:force_ruby_platform] + @platforms = [Gem::Platform::RUBY] + else + @platforms = @locked_platforms.dup + end @locked_bundler_version = @locked_gems.bundler_version @locked_ruby_version = @locked_gems.ruby_version @@ -228,12 +232,13 @@ module Bundler end def current_dependencies - dependencies.select(&:should_include?) + dependencies.select do |d| + d.should_include? && !d.gem_platforms(@platforms).empty? + end end def specs_for(groups) - deps = dependencies.select {|d| (d.groups & groups).any? } - deps.delete_if {|d| !d.should_include? } + deps = dependencies_for(groups) specs.for(expand_dependencies(deps)) end @@ -904,10 +909,16 @@ module Bundler deps end + def dependencies_for(groups) + current_dependencies.reject do |d| + (d.groups & groups).empty? + end + end + def requested_dependencies groups = requested_groups groups.map!(&:to_sym) - dependencies.reject {|d| !d.should_include? || (d.groups & groups).empty? } + dependencies_for(groups) end def source_requirements diff --git a/spec/install/gems/flex_spec.rb b/spec/install/gems/flex_spec.rb index 70a4c624dd..77891acc24 100644 --- a/spec/install/gems/flex_spec.rb +++ b/spec/install/gems/flex_spec.rb @@ -192,12 +192,6 @@ RSpec.describe "bundle flex_install" do end it "suggests bundle update when the Gemfile requires different versions than the lock" do - if Bundler.feature_flag.specific_platform? - error_message_platform = " #{Bundler.local_platform}" - else - error_message_platform = "" - end - bundle "config set force_ruby_platform true" nice_error = <<-E.strip.gsub(/^ {8}/, "") @@ -207,10 +201,10 @@ RSpec.describe "bundle flex_install" do In Gemfile: rack-obama (= 2.0) was resolved to 2.0, which depends on - rack (= 1.2)#{error_message_platform} + rack (= 1.2) rack_middleware was resolved to 1.0, which depends on - rack (= 0.9.1)#{error_message_platform} + rack (= 0.9.1) Running `bundle update` will rebuild your snapshot from scratch, using only the gems in your Gemfile, which may resolve the conflict. diff --git a/spec/runtime/platform_spec.rb b/spec/runtime/platform_spec.rb index ad9c56d14e..70c7594395 100644 --- a/spec/runtime/platform_spec.rb +++ b/spec/runtime/platform_spec.rb @@ -113,6 +113,7 @@ RSpec.describe "Bundler.setup with multi platform stuff" do bundle! "install" expect(the_bundle).to include_gems "platform_specific 1.0 RUBY" + expect(the_bundle).to not_include_gems "nokogiri" end end |