123456789_123456789_123456789_123456789_123456789_

Class: Bundler::ParallelInstaller::SpecInstallation

Relationships & Source Files
Inherits: Object
Defined in: lib/bundler/installer/parallel_installer.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(spec) ⇒ SpecInstallation

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 10

def initialize(spec)
  @spec = spec
  @name = spec.name
  @full_name = spec.full_name
  @state = :none
  @post_install_message = ""
  @error = nil
end

Instance Attribute Details

#dependencies (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#enqueue_with_priority?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 27

def enqueue_with_priority?
  state == :installable && spec.extensions.any?
end

#enqueued?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 23

def enqueued?
  state == :enqueued
end

#error (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#failed?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 31

def failed?
  state == :failed
end

#full_name (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#has_post_install_message?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 45

def has_post_install_message?
  !post_install_message.empty?
end

#installed?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 19

def installed?
  state == :installed
end

#name (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#post_install_message (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#ready_to_enqueue?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 35

def ready_to_enqueue?
  state == :none
end

#spec (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

#state (rw)

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 9

attr_accessor :spec, :name, :full_name, :post_install_message, :state, :error, :dependencies

Instance Method Details

#dependencies_installed?(installed_specs) ⇒ Boolean

Recursively checks that all dependencies (direct and transitive) have been installed.

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 50

def dependencies_installed?(installed_specs)
  dependencies.all? do |dep|
    installed_specs.include?(dep.name) && dep.dependencies_installed?(installed_specs)
  end
end

#ready_to_install?(installed_specs) ⇒ Boolean

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 39

def ready_to_install?(installed_specs)
  return false unless state == :downloaded

  spec.extensions.none? || dependencies_installed?(installed_specs)
end

#to_s

[ GitHub ]

  
# File 'lib/bundler/installer/parallel_installer.rb', line 56

def to_s
  "#<#{self.class} #{full_name} (#{state})>"
end