lib/bundler/lazy_specification.rb in bundler-1.14.4 vs lib/bundler/lazy_specification.rb in bundler-1.14.5

- old
+ new

@@ -1,8 +1,7 @@ # frozen_string_literal: true require "uri" -require "rubygems/spec_fetcher" require "bundler/match_platform" module Bundler class LazySpecification Identifier = Struct.new(:name, :version, :source, :platform, :dependencies) @@ -71,10 +70,17 @@ def __materialize__ search_object = Bundler.settings[:specific_platform] || Bundler.settings[:force_ruby_platform] ? self : Dependency.new(name, version) @specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name source.gemspec.tap {|s| s.source = source } else - source.specs.search(search_object).last + search = source.specs.search(search_object).last + if search && search.platform != platform && !search.runtime_dependencies.-(dependencies.reject {|d| d.type == :development }).empty? + Bundler.ui.warn "Unable to use the platform-specific (#{search.platform}) version of #{name} (#{version}) " \ + "because it has different dependencies from the #{platform} version. " \ + "To use the platform-specific version of the gem, run `bundle config specific_platform true` and install again." + search = source.specs.search(self).last + end + search end end def respond_to?(*args) super || @specification ? @specification.respond_to?(*args) : nil