Class: Bundler::Resolver::SpecGroup
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
::Bundler::GemHelpers
|
|
Inherits: | Object |
Defined in: | lib/bundler/resolver/spec_group.rb |
Constant Summary
::Bundler::GemHelpers
- Included
Class Method Summary
- .new(all_specs) ⇒ SpecGroup constructor
Instance Attribute Summary
- #ignores_bundler_dependencies rw
- #name rw
- #source rw
- #version rw
Instance Method Summary
- #==(other)
- #activate_platform!(platform)
- #dependencies_for_activated_platforms
- #eql?(other) ⇒ Boolean
- #for?(platform) ⇒ Boolean
- #hash
- #to_s
- #to_specs
- #__dependencies private
- #metadata_dependencies(spec, platform) private
::Bundler::GemHelpers
- Included
Constructor Details
.new(all_specs) ⇒ SpecGroup
# File 'lib/bundler/resolver/spec_group.rb', line 11
def initialize(all_specs) raise ArgumentError, "cannot initialize with an empty value" unless exemplary_spec = all_specs.first @name = exemplary_spec.name @version = exemplary_spec.version @source = exemplary_spec.source @activated_platforms = [] @dependencies = nil @specs = Hash.new do |specs, platform| specs[platform] = select_best_platform_match(all_specs, platform) end @ignores_bundler_dependencies = true end
Instance Attribute Details
#ignores_bundler_dependencies (rw)
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 9
attr_accessor :ignores_bundler_dependencies
#name (rw)
[ GitHub ]#source (rw)
[ GitHub ]#version (rw)
[ GitHub ]Instance Method Details
#==(other)
[ GitHub ]#__dependencies (private)
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 77
def __dependencies @dependencies = Hash.new do |dependencies, platform| dependencies[platform] = [] if spec = @specs[platform] spec.dependencies.each do |dep| next if dep.type == :development next if @ignores_bundler_dependencies && dep.name == "bundler".freeze dependencies[platform] << DepProxy.new(dep, platform) end end dependencies[platform] end end
#activate_platform!(platform)
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 34
def activate_platform!(platform) return unless for?(platform) return if @activated_platforms.include?(platform) @activated_platforms << platform end
#dependencies_for_activated_platforms
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 49
def dependencies_for_activated_platforms dependencies = @activated_platforms.map {|p| __dependencies[p] } = @activated_platforms.map do |platform| (@specs[platform], platform) end dependencies.concat( ).flatten end
#eql?(other) ⇒ Boolean
#for?(platform) ⇒ Boolean
# File 'lib/bundler/resolver/spec_group.rb', line 40
def for?(platform) spec = @specs[platform] !spec.nil? end
#hash
[ GitHub ]#metadata_dependencies(spec, platform) (private)
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 91
def (spec, platform) return [] unless spec # Only allow endpoint specifications since they won't hit the network to # fetch the full gemspec when calling required_ruby_version return [] if !spec.is_a?(EndpointSpecification) && !spec.is_a?(Gem::Specification) dependencies = [] if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none? dependencies << DepProxy.new(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform) end if !spec.required_rubygems_version.nil? && !spec.required_rubygems_version.none? dependencies << DepProxy.new(Gem::Dependency.new("RubyGems\0", spec.required_rubygems_version), platform) end dependencies end
#to_s
[ GitHub ]#to_specs
[ GitHub ]# File 'lib/bundler/resolver/spec_group.rb', line 25
def to_specs @activated_platforms.map do |p| next unless s = @specs[p] lazy_spec = LazySpecification.new(name, version, s.platform, source) lazy_spec.dependencies.replace s.dependencies lazy_spec end.compact end