Class: Bundler::ParallelInstaller
- Inherits:
-
Object
- Object
- Bundler::ParallelInstaller
- Defined in:
- lib/bundler/installer/parallel_installer.rb
Defined Under Namespace
Classes: SpecInstallation
Instance Attribute Summary collapse
-
#size ⇒ Object
readonly
Returns the value of attribute size.
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
- #check_for_unmet_dependencies ⇒ Object
-
#initialize(installer, all_specs, size, standalone, force) ⇒ ParallelInstaller
constructor
A new instance of ParallelInstaller.
Constructor Details
#initialize(installer, all_specs, size, standalone, force) ⇒ ParallelInstaller
Returns a new instance of ParallelInstaller.
72 73 74 75 76 77 78 79 80 |
# File 'lib/bundler/installer/parallel_installer.rb', line 72 def initialize(installer, all_specs, size, standalone, force) @installer = installer @size = size @standalone = standalone @force = force @specs = all_specs.map {|s| SpecInstallation.new(s) } @spec_set = all_specs @rake = @specs.find {|s| s.name == "rake" } end |
Instance Attribute Details
#size ⇒ Object (readonly)
Returns the value of attribute size.
70 71 72 |
# File 'lib/bundler/installer/parallel_installer.rb', line 70 def size @size end |
Class Method Details
.call(*args) ⇒ Object
66 67 68 |
# File 'lib/bundler/installer/parallel_installer.rb', line 66 def self.call(*args) new(*args).call end |
Instance Method Details
#call ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/bundler/installer/parallel_installer.rb', line 82 def call if @rake do_install(@rake, 0) Gem::Specification.reset end if @size > 1 install_with_worker else install_serially end check_for_unmet_dependencies handle_error if failed_specs.any? @specs ensure worker_pool && worker_pool.stop end |
#check_for_unmet_dependencies ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/bundler/installer/parallel_installer.rb', line 102 def check_for_unmet_dependencies unmet_dependencies = @specs.map do |s| [ s, s.dependencies.reject {|dep| @specs.any? {|spec| dep.matches_spec?(spec.spec) } }, ] end.reject {|a| a.last.empty? } return if unmet_dependencies.empty? warning = [] warning << "Your lockfile doesn't include a valid resolution." warning << "You can fix this by regenerating your lockfile or manually editing the bad locked gems to a version that satisfies all dependencies." warning << "The unmet dependencies are:" unmet_dependencies.each do |spec, unmet_spec_dependencies| unmet_spec_dependencies.each do |unmet_spec_dependency| found = @specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) } warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}" end end Bundler.ui.warn(warning.join("\n")) end |