123456789_123456789_123456789_123456789_123456789_

Module: Bundler::GemHelpers

Relationships & Source Files
Namespace Children
Classes:
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: lib/bundler/gem_helpers.rb

Constant Summary

Class Method Summary

Class Method Details

.generic(p) (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 16

def generic(p)
  GENERIC_CACHE[p] ||= begin
    _, found = GENERICS.find do |match, _generic|
      p.os == match.os && (!match.cpu || p.cpu == match.cpu)
    end
    found || Gem::Platform::RUBY
  end
end

.generic_local_platform (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 26

def generic_local_platform
  generic(local_platform)
end

.local_platform (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 31

def local_platform
  Bundler.local_platform
end

.platform_specificity_match(spec_platform, user_platform) (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 36

def platform_specificity_match(spec_platform, user_platform)
  spec_platform = Gem::Platform.new(spec_platform)

  PlatformMatch.specificity_score(spec_platform, user_platform)
end

.same_deps(spec, exemplary_spec) (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 101

def same_deps(spec, exemplary_spec)
  same_runtime_deps = spec.dependencies.sort == exemplary_spec.dependencies.sort
  return same_runtime_deps unless spec.is_a?(Gem::Specification) && exemplary_spec.is_a?(Gem::Specification)

   = spec.required_ruby_version == exemplary_spec.required_ruby_version && spec.required_rubygems_version == exemplary_spec.required_rubygems_version
  same_runtime_deps && 
end

.same_specificity(platform, spec, exemplary_spec) (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 96

def same_specificity(platform, spec, exemplary_spec)
  platform_specificity_match(spec.platform, platform) == platform_specificity_match(exemplary_spec.platform, platform)
end

.select_best_platform_match(specs, platform) (mod_func)

[ GitHub ]

  
# File 'lib/bundler/gem_helpers.rb', line 43

def select_best_platform_match(specs, platform)
  matching = specs.select {|spec| spec.match_platform(platform) }
  exact = matching.select {|spec| spec.platform == platform }
  return exact if exact.any?

  sorted_matching = matching.sort_by {|spec| platform_specificity_match(spec.platform, platform) }
  exemplary_spec = sorted_matching.first

  sorted_matching.take_while{|spec| same_specificity(platform, spec, exemplary_spec) && same_deps(spec, exemplary_spec) }
end