class Bundler::Resolver::SpecGroup
Attributes
activated[R]
Public Class Methods
new(a)
click to toggle source
Calls superclass method
# File lib/bundler/resolver.rb, line 82 def initialize(a) super @required_by = [] @activated_platforms = [] @dependencies = nil @specs = Hash.new do |specs, platform| specs[platform] = select_best_platform_match(self, platform) end end
Public Instance Methods
activate_platform!(platform)
click to toggle source
# File lib/bundler/resolver.rb, line 106 def activate_platform!(platform) return unless for?(platform) return if @activated_platforms.include?(platform) @activated_platforms << platform end
dependencies_for_activated_platforms()
click to toggle source
# File lib/bundler/resolver.rb, line 133 def dependencies_for_activated_platforms dependencies = @activated_platforms.map {|p| __dependencies[p] } metadata_dependencies = @activated_platforms.map do |platform| metadata_dependencies(@specs[platform], platform) end dependencies.concat(metadata_dependencies).flatten end
for?(platform)
click to toggle source
# File lib/bundler/resolver.rb, line 124 def for?(platform) spec = @specs[platform] !spec.nil? end
initialize_copy(o)
click to toggle source
Calls superclass method
# File lib/bundler/resolver.rb, line 92 def initialize_copy(o) super @activated_platforms = o.activated.dup end
name()
click to toggle source
# File lib/bundler/resolver.rb, line 112 def name @name ||= first.name end
platforms_for_dependency_named(dependency)
click to toggle source
# File lib/bundler/resolver.rb, line 141 def platforms_for_dependency_named(dependency) __dependencies.select {|_, deps| deps.map(&:name).include? dependency }.keys end
source()
click to toggle source
# File lib/bundler/resolver.rb, line 120 def source @source ||= first.source end
to_s()
click to toggle source
# File lib/bundler/resolver.rb, line 129 def to_s "#{name} (#{version})" end
to_specs()
click to toggle source
# File lib/bundler/resolver.rb, line 97 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
version()
click to toggle source
# File lib/bundler/resolver.rb, line 116 def version @version ||= first.version end
Private Instance Methods
__dependencies()
click to toggle source
# File lib/bundler/resolver.rb, line 147 def __dependencies @dependencies = Hash.new do |dependencies, platform| dependencies[platform] = [] if spec = @specs[platform] spec.dependencies.each do |dep| next if dep.type == :development dependencies[platform] << DepProxy.new(dep, platform) end end dependencies[platform] end end
metadata_dependencies(spec, platform)
click to toggle source
# File lib/bundler/resolver.rb, line 160 def metadata_dependencies(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