Class: Bundler::ParallelInstaller
- Inherits:
-
Object
- Object
- Bundler::ParallelInstaller
show all
- Defined in:
- lib/bundler/installer/parallel_installer.rb
Defined Under Namespace
Classes: SpecInstallation
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(installer, all_specs, size, standalone, force) ⇒ ParallelInstaller
83
84
85
86
87
88
89
90
91
|
# File 'lib/bundler/installer/parallel_installer.rb', line 83
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
Returns the value of attribute size.
81
82
83
|
# File 'lib/bundler/installer/parallel_installer.rb', line 81
def size
@size
end
|
Class Method Details
.call(*args) ⇒ Object
77
78
79
|
# File 'lib/bundler/installer/parallel_installer.rb', line 77
def self.call(*args)
new(*args).call
end
|
Instance Method Details
#call ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/bundler/installer/parallel_installer.rb', line 93
def call
check_for_corrupt_lockfile
if @size > 1
install_with_worker
else
install_serially
end
handle_error if failed_specs.any?
@specs
ensure
worker_pool && worker_pool.stop
end
|
#check_for_corrupt_lockfile ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/bundler/installer/parallel_installer.rb', line 108
def check_for_corrupt_lockfile
missing_dependencies = @specs.map do |s|
[
s,
s.missing_lockfile_dependencies(@specs.map(&:name)),
]
end.reject {|a| a.last.empty? }
return if missing_dependencies.empty?
warning = []
warning << "Your lockfile was created by an old Bundler that left some things out."
if @size != 1
warning << "Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing #{@size} at a time."
@size = 1
end
warning << "You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile."
warning << "The missing gems are:"
missing_dependencies.each do |spec, missing|
warning << "* #{missing.map(&:name).join(", ")} depended upon by #{spec.name}"
end
Bundler.ui.warn(warning.join("\n"))
end
|