capistrano_multiconfig_parallel 2.0.1 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -1
- data/README.md +18 -9
- data/capistrano_multiconfig_parallel.gemspec +1 -1
- data/lib/capistrano_multiconfig_parallel/all.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/application.rb +35 -11
- data/lib/capistrano_multiconfig_parallel/celluloid/bundler_terminal_table.rb +42 -0
- data/lib/capistrano_multiconfig_parallel/celluloid/bundler_worker.rb +36 -7
- data/lib/capistrano_multiconfig_parallel/celluloid/terminal_table.rb +5 -2
- data/lib/capistrano_multiconfig_parallel/classes/cursor.rb +0 -2
- data/lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/classes/job.rb +14 -3
- data/lib/capistrano_multiconfig_parallel/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d23166b1840bdc3b08aba70bc46a988b93fa9d3
|
4
|
+
data.tar.gz: 1810d6abd23e17df7aae1519894651152ba950e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a74d2fed08ad4a5bfa2d7bbaa8b86be79d9c184feacd927538529087aebca29f2de1ff4773ab860c94b6dd204a4d91da2cd3592672124e8007f0c151aded3eb0
|
7
|
+
data.tar.gz: f4be5d8432d06f49bc9dfaab76e9e0fb67ecabcfea3ffd12bfc44e7e8cd0de6f77bd1e63a4f94e14dc54693292414d4e4388bc915b7d7c67cb31025b4ba4bcc9
|
data/.codeclimate.yml
CHANGED
data/README.md
CHANGED
@@ -21,13 +21,19 @@ NEW Improvements started in version 2.0.0.alpha ( currently gem is in stable ver
|
|
21
21
|
-------------------------------------------------------------------------------------
|
22
22
|
|
23
23
|
- Code for handling websocket events when a task is invoked was moved to a new gem [capistrano_sentinel](https://github.com/bogdanRada/capistrano_sentinel)
|
24
|
-
|
25
|
-
-
|
26
|
-
|
27
|
-
-
|
28
|
-
|
29
|
-
-
|
30
|
-
|
24
|
+
|
25
|
+
- You can now deploy applications from anywhere on your computer **without having to add THIS gem to the Gemfiles of those applications**, however we recommend you to add the [capistrano_sentinel](https://github.com/bogdanRada/capistrano_sentinel) gem to those Gemfiles for better stability. **The applications though must contain proper configuration for capistrano as you would normally do!!!**
|
26
|
+
|
27
|
+
- If [capistrano_sentinel](https://github.com/bogdanRada/capistrano_sentinel) is included in one of the applications you are deploying, but you forget to require it, this gem will automatically patch the Capfile to require the gem. Otherwise the Capfile is not changed.
|
28
|
+
|
29
|
+
- However this will work even if you don't add the [capistrano_sentinel](https://github.com/bogdanRada/capistrano_sentinel) to your Gemfile, because the new version will automatically create three files "Gemfile.multi_cap", "Gemfile.multi_cap.lock" and "Capfile.multi_cap" where the dependency to **capistrano_sentinel** will be added and those new files will be used when deploying. This new Gemfile and the new Capfile will be clones of the original files, but will only add as dependency the **capistrano_sentinel** gem which is used to produce websocket events before a capistrano task is executed. And this gem will consume them and act depending on configuration.
|
30
|
+
|
31
|
+
- After installing this gem locally on your system, you can just create anywhere on your computer a YAML file as described in section **[2.2) Deploying multiple applications from a central location](#22-deploying-multiple-applications-from-a-central-location)** ( we suggest using the home directory) and then you can start deploying applications without adding new dependencies to those applications.
|
32
|
+
|
33
|
+
- When the command will finish , the files created will be removed. ("Gemfile.multi_cap", "Gemfile.multi_cap.lock" and "Capfile.multi_cap") if they exist in the application root directory.
|
34
|
+
|
35
|
+
- If you are using RVM and there is a .rvmrc file in your project root directory and bash is available , the script will use bash emulator in order to properly load RVM gemsets because .rvmrc files need trusting. **If you use .rvmrc files please make sure you have the `bash` executable available in your PATH**
|
36
|
+
|
31
37
|
- **Dont use BUNDLE EXEC command when running the executable for this gem unless you are using version 1 or this gem is part of the Gemfile of the application you are using. Otherwise just use the `multi_cap` executable without any prefix ( Unless this gem is part of your gemfile, in which case the BUNDLE EXEC prefix is needed )**
|
32
38
|
|
33
39
|
If you are using a older version than 2.0 please refer to this [README for version 1.7.2 or lower](https://github.com/bogdanRada/capistrano_multiconfig_parallel/blob/master/V1_README.md)
|
@@ -48,7 +54,8 @@ Requirements
|
|
48
54
|
10. [configliere >= 0.4](https://github.com/infochimps-platform/configliere)
|
49
55
|
11. [inquirer >= 0.2](https://github.com/arlimus/inquirer.rb)
|
50
56
|
12. [devnull >= 0.1](https://github.com/arlimus/inquirer.rb)
|
51
|
-
13. [capistrano_sentinel >=
|
57
|
+
13. [capistrano_sentinel >= 0.0.16](http://github.com/bogdanRada/capistrano_sentinel)
|
58
|
+
14. [ruby-progressbar >= 1.8.1](https://github.com/jfelchner/ruby-progressbar)
|
52
59
|
|
53
60
|
Compatibility
|
54
61
|
-------------
|
@@ -76,8 +83,10 @@ Add the following to your Capfile after requiring **capistrano** and **capistran
|
|
76
83
|
|
77
84
|
Install locally on your system the capistrano_multiconfig_parallel gem using this command :
|
78
85
|
|
86
|
+
**Please check first what is the last release here: [Release Details](https://github.com/bogdanRada/capistrano_multiconfig_parallel/releases) and use that version instead of the one below**
|
87
|
+
|
79
88
|
```ruby
|
80
|
-
gem install capistrano_multiconfig_parallel -v 2.0.
|
89
|
+
gem install capistrano_multiconfig_parallel -v 2.0.1
|
81
90
|
```
|
82
91
|
|
83
92
|
Please read [Release Details](https://github.com/bogdanRada/capistrano_multiconfig_parallel/releases) if you are upgrading. We break backward compatibility between large ticks but you can expect it to be specified at release notes.
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_runtime_dependency 'inquirer', '~> 0.2', '>= 0.2'
|
31
31
|
s.add_runtime_dependency 'devnull','~> 0.1', '>= 0.1'
|
32
32
|
s.add_runtime_dependency 'capistrano_sentinel', '>= 0.0', '>= 0.0.16'
|
33
|
-
s.add_runtime_dependency '
|
33
|
+
s.add_runtime_dependency 'powerbar', '~> 1.0', '>= 1.0.17'
|
34
34
|
|
35
35
|
s.add_development_dependency 'rake', '>= 10.4', '>= 10.4'
|
36
36
|
s.add_development_dependency 'rspec', '~> 3.4', '>= 3.4'
|
@@ -2,9 +2,24 @@ require_relative './helpers/base_actor_helper'
|
|
2
2
|
module CapistranoMulticonfigParallel
|
3
3
|
# finds app dependencies, shows menu and delegates jobs to celluloid manager
|
4
4
|
class Application
|
5
|
-
include CapistranoMulticonfigParallel::
|
6
|
-
|
7
|
-
attr_reader :stage_apps,
|
5
|
+
include CapistranoMulticonfigParallel::BaseActorHelper
|
6
|
+
|
7
|
+
attr_reader :stage_apps,
|
8
|
+
:top_level_tasks,
|
9
|
+
:jobs,
|
10
|
+
:condition,
|
11
|
+
:manager,
|
12
|
+
:dependency_tracker,
|
13
|
+
:application,
|
14
|
+
:stage,
|
15
|
+
:name,
|
16
|
+
:args,
|
17
|
+
:argv,
|
18
|
+
:default_stage,
|
19
|
+
:patched_job_paths,
|
20
|
+
:bundler_workers_store,
|
21
|
+
:checked_job_paths
|
22
|
+
|
8
23
|
attr_writer :patched_job_paths
|
9
24
|
|
10
25
|
def initialize
|
@@ -12,7 +27,7 @@ module CapistranoMulticonfigParallel
|
|
12
27
|
CapistranoMulticonfigParallel.enable_logging
|
13
28
|
@stage_apps = multi_apps? ? app_names_from_stages : []
|
14
29
|
collect_command_line_tasks(CapistranoMulticonfigParallel.original_args)
|
15
|
-
@
|
30
|
+
@bundler_workers_store = {}
|
16
31
|
@jobs = []
|
17
32
|
@checked_job_paths = []
|
18
33
|
@patched_job_paths = [] # for deploy
|
@@ -93,10 +108,20 @@ module CapistranoMulticonfigParallel
|
|
93
108
|
end
|
94
109
|
|
95
110
|
def check_before_starting
|
96
|
-
@dependency_tracker = CapistranoMulticonfigParallel::DependencyTracker.new(
|
111
|
+
@dependency_tracker = CapistranoMulticonfigParallel::DependencyTracker.new(Actor.current)
|
97
112
|
@default_stage = configuration.development_stages.present? ? configuration.development_stages.first : 'development'
|
98
113
|
@condition = Celluloid::Condition.new
|
99
|
-
@manager = CapistranoMulticonfigParallel::CelluloidManager.new(
|
114
|
+
@manager = CapistranoMulticonfigParallel::CelluloidManager.new(Actor.current)
|
115
|
+
start_bundler_supervision_if_needed
|
116
|
+
end
|
117
|
+
|
118
|
+
def start_bundler_supervision_if_needed
|
119
|
+
return if configuration.check_app_bundler_dependencies.to_s.downcase != 'true'
|
120
|
+
@bundler_worker_supervisor = setup_supervision_group
|
121
|
+
@mutex = Mutex.new
|
122
|
+
@bundler_workers = setup_pool_of_actor(@bundler_worker_supervisor, actor_name: :bundler_workers, type: CapistranoMulticonfigParallel::BundlerWorker, size: 10)
|
123
|
+
Actor.current.link @bundler_workers
|
124
|
+
setup_actor_supervision(@bundler_worker_supervisor, actor_name: :bundler_terminal_server, type: CapistranoMulticonfigParallel::BundlerTerminalTable, args: [@manager, Actor.current, configuration.fetch(:terminal, {})])
|
100
125
|
end
|
101
126
|
|
102
127
|
def collect_jobs(options = {}, &_block)
|
@@ -166,7 +191,7 @@ module CapistranoMulticonfigParallel
|
|
166
191
|
collect_jobs(options)
|
167
192
|
end
|
168
193
|
if configuration.check_app_bundler_dependencies.to_s.downcase == 'true'
|
169
|
-
sleep(0.1) until @jobs.size == @
|
194
|
+
sleep(0.1) until @jobs.size == @bundler_workers_store.size
|
170
195
|
end
|
171
196
|
process_jobs
|
172
197
|
end
|
@@ -223,7 +248,7 @@ module CapistranoMulticonfigParallel
|
|
223
248
|
env_options = options['env_options']
|
224
249
|
job_env_options = custom_command? ? env_options.except(action_key) : env_options
|
225
250
|
|
226
|
-
job = CapistranoMulticonfigParallel::Job.new(
|
251
|
+
job = CapistranoMulticonfigParallel::Job.new(Actor.current, options.merge(
|
227
252
|
action: custom_command? && env_options[action_key].present? ? env_options[action_key] : options['action'],
|
228
253
|
env_options: job_env_options,
|
229
254
|
path: job_path(options)
|
@@ -238,14 +263,13 @@ module CapistranoMulticonfigParallel
|
|
238
263
|
unless job.capistrano_sentinel_needs_updating?
|
239
264
|
raise "Please consider upgrading the gem #{job.capistrano_sentinel_name} to version #{job.loaded_capistrano_sentinel_version} from #{job.job_capistrano_sentinel_version} in #{job.job_path} "
|
240
265
|
end
|
266
|
+
log_to_file("bundler callback called with #{job.inspect}")
|
241
267
|
job.application.jobs << job unless job.application.job_can_tag_staging?(job)
|
242
268
|
}
|
243
269
|
if configuration.check_app_bundler_dependencies.to_s.downcase == 'true' && job.job_gemfile.present?
|
244
270
|
if !@checked_job_paths.include?(job.job_path)
|
245
271
|
@checked_job_paths << job.job_path
|
246
|
-
|
247
|
-
@bundler_workers << {job: job, worker: bundler_worker }
|
248
|
-
bundler_worker.work(job, &bundler_callback) # make sure we have installed the dependencies first for this application
|
272
|
+
@bundler_workers.work(job, &bundler_callback) # make sure we have installed the dependencies first for this application
|
249
273
|
end
|
250
274
|
else
|
251
275
|
bundler_callback.call(job)
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module CapistranoMulticonfigParallel
|
2
|
+
class BundlerTerminalTable < CapistranoMulticonfigParallel::TerminalTable
|
3
|
+
|
4
|
+
def self.topic
|
5
|
+
'bundler_terminal'
|
6
|
+
end
|
7
|
+
|
8
|
+
def default_heaadings
|
9
|
+
['Job UUID', 'App', 'Action', 'Current Status']
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
subscribe(CapistranoMulticonfigParallel::BundlerTerminalTable.topic, :notify_bundler_install_status)
|
14
|
+
end
|
15
|
+
|
16
|
+
def notify_bundler_install_status(_channel, _message)
|
17
|
+
table = Terminal::Table.new(title: 'Bundler Check Status Table', headings: default_heaadings)
|
18
|
+
jobs = setup_table_jobs(table)
|
19
|
+
display_table_on_terminal(table, jobs)
|
20
|
+
end
|
21
|
+
|
22
|
+
def fetch_table_size(jobs)
|
23
|
+
job_rows = jobs.sum { |job, _bundler_worker| job.row_size }
|
24
|
+
(job_rows + 2)**2
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def setup_table_jobs(table)
|
29
|
+
jobs = managers_alive? ? @job_manager.bundler_workers_store.dup : []
|
30
|
+
jobs.each do |job, bundler_worker|
|
31
|
+
table.add_row(job.bundler_check_terminal_row)
|
32
|
+
table.add_separator if jobs.keys.last != job
|
33
|
+
end
|
34
|
+
jobs
|
35
|
+
end
|
36
|
+
|
37
|
+
def managers_alive?
|
38
|
+
@job_manager.alive?
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -17,18 +17,39 @@ module CapistranoMulticonfigParallel
|
|
17
17
|
|
18
18
|
def work(job, &callback)
|
19
19
|
@job = job
|
20
|
+
@callback = callback
|
21
|
+
@job.application.bundler_workers_store[job] = Actor.current
|
20
22
|
@job_id = job.id
|
21
23
|
@runner_status = nil
|
22
24
|
@log_prefix = 'bundler'
|
23
25
|
@checked_bundler_deps = []
|
24
26
|
@total_dependencies = bundler_dependencies.size
|
25
27
|
@show_bundler = true
|
26
|
-
progress_bar
|
27
28
|
async.check_missing_deps
|
28
29
|
end
|
29
30
|
|
30
31
|
def progress_bar
|
31
|
-
|
32
|
+
if defined?(@progress_bar)
|
33
|
+
@progress_bar
|
34
|
+
else
|
35
|
+
@progress_bar ||= PowerBar.new
|
36
|
+
@progress_bar.define_singleton_method :terminal_width do
|
37
|
+
40
|
38
|
+
end
|
39
|
+
@progress_bar.settings.tty.finite.template.main = \
|
40
|
+
"${<msg>} ${<bar> } ${<percent>%}" # + "${<rate>/s} ${<elapsed>}${ ETA: <eta>}"
|
41
|
+
@progress_bar.settings.tty.finite.template.padchar = "#{@progress_bar.settings.tty.finite.template.padchar}"
|
42
|
+
@progress_bar.settings.tty.finite.template.barchar = "#{@progress_bar.settings.tty.finite.template.barchar}"
|
43
|
+
@progress_bar.settings.tty.finite.template.exit = "\e[?25h\e[0mFINISHED" # clean up after us
|
44
|
+
@progress_bar.settings.tty.finite.template.close = "\e[?25h\e[0mFINISHED \n" # clean up after us
|
45
|
+
@progress_bar.settings.tty.finite.output = Proc.new{ |data|
|
46
|
+
if data.present? && data.include?("Error") || data.include?("Installing")
|
47
|
+
@job.bundler_check_status = data.include?("Error") ? data.to_s.red : data.to_s.green
|
48
|
+
send_msg(CapistranoMulticonfigParallel::BundlerTerminalTable.topic, type: 'event', data: data.to_s.uncolorize )
|
49
|
+
end
|
50
|
+
}
|
51
|
+
@progress_bar
|
52
|
+
end
|
32
53
|
end
|
33
54
|
|
34
55
|
def bundler_dependencies
|
@@ -42,13 +63,15 @@ module CapistranoMulticonfigParallel
|
|
42
63
|
@show_bundler = false if data.to_s.include?("The Gemfile's dependencies are satisfied") || data.to_s.include?("Bundle complete")
|
43
64
|
gem_spec = bundler_dependencies.find{|spec| data.include?(spec.name) }
|
44
65
|
if data.include?("Error") && @show_bundler == true && gem_spec.present?
|
66
|
+
@checked_bundler_deps << [gem_spec.name]
|
67
|
+
progress_bar.show(:msg => "Error installing #{gem_spec.name} (#{@checked_bundler_deps.size} from #{@total_dependencies.to_i} deps)", :done => @checked_bundler_deps.size, :total => @total_dependencies.to_i)
|
45
68
|
error_message = "Bundler worker #{@job_id} task failed for #{gem_spec.inspect}"
|
46
69
|
raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message)
|
47
70
|
elsif @show_bundler == true && gem_spec.present?
|
48
|
-
@checked_bundler_deps
|
49
|
-
progress_bar.
|
71
|
+
@checked_bundler_deps << [gem_spec.name]
|
72
|
+
progress_bar.show(:msg => "Installing #{gem_spec.name} (#{@checked_bundler_deps.size} from #{@total_dependencies.to_i} deps)", :done => @checked_bundler_deps.size, :total => @total_dependencies.to_i)
|
50
73
|
elsif @show_bundler == false
|
51
|
-
progress_bar.
|
74
|
+
progress_bar.close if defined?(@progress_bar)
|
52
75
|
end
|
53
76
|
end
|
54
77
|
|
@@ -66,14 +89,20 @@ module CapistranoMulticonfigParallel
|
|
66
89
|
def notify_finished(exit_status, runner_status)
|
67
90
|
@runner_status = runner_status
|
68
91
|
@exit_status = exit_status
|
69
|
-
progress_bar.
|
92
|
+
progress_bar.close if defined?(@progress_bar)
|
70
93
|
if exit_status == 0
|
71
|
-
callback.call(@job)
|
94
|
+
@callback.call(@job)
|
72
95
|
else
|
73
96
|
error_message = "Bundler worker #{@job_id} task failed with exit status #{exit_status.inspect}"
|
74
97
|
raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message)
|
75
98
|
end
|
76
99
|
end
|
77
100
|
|
101
|
+
def send_msg(channel, message = nil)
|
102
|
+
message = message.present? && message.is_a?(Hash) ? { job_id: @job_id }.merge(message) : { job_id: @job_id, message: message }
|
103
|
+
log_to_file("worker #{@job_id} triest to send to #{channel} #{message}")
|
104
|
+
publish channel, message
|
105
|
+
end
|
106
|
+
|
78
107
|
end
|
79
108
|
end
|
@@ -23,6 +23,7 @@ module CapistranoMulticonfigParallel
|
|
23
23
|
@terminal_rows = nil
|
24
24
|
@cursor = CapistranoMulticonfigParallel::Cursor.new
|
25
25
|
@errors = []
|
26
|
+
@notifications = 0
|
26
27
|
@options = options.is_a?(Hash) ? options.stringify_keys : options
|
27
28
|
@job_manager = job_manager
|
28
29
|
@screen_erased = false
|
@@ -43,7 +44,10 @@ module CapistranoMulticonfigParallel
|
|
43
44
|
def notify_time_change(_channel, message)
|
44
45
|
table = Terminal::Table.new(title: 'Deployment Status Table', headings: default_heaadings)
|
45
46
|
jobs = setup_table_jobs(table)
|
47
|
+
@cursor.erase_screen if @notifications.to_i.zero? && @job_manager.checked_job_paths.size > 0 && jobs.find{|job_id, job| job.bundler_check_status.present? }.present?
|
48
|
+
@notifications=@notifications+1
|
46
49
|
display_table_on_terminal(table, jobs)
|
50
|
+
signal_complete
|
47
51
|
end
|
48
52
|
|
49
53
|
def rescue_exception(ex)
|
@@ -68,7 +72,6 @@ module CapistranoMulticonfigParallel
|
|
68
72
|
)
|
69
73
|
)
|
70
74
|
print_errors
|
71
|
-
signal_complete
|
72
75
|
end
|
73
76
|
|
74
77
|
def print_errors
|
@@ -91,7 +94,7 @@ module CapistranoMulticonfigParallel
|
|
91
94
|
end
|
92
95
|
|
93
96
|
def managers_alive?
|
94
|
-
|
97
|
+
@job_manager.alive? && @manager.alive?
|
95
98
|
end
|
96
99
|
|
97
100
|
def signal_complete
|
@@ -11,7 +11,7 @@ module CapistranoMulticonfigParallel
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def fetch_apps_needed_for_deployment(application, action)
|
14
|
-
return [[], {}] unless @job_manager.
|
14
|
+
return [[], {}] unless @job_manager.multi_apps?
|
15
15
|
if @job_manager.custom_command?
|
16
16
|
show_interactive_menu(action)
|
17
17
|
else
|
@@ -5,8 +5,8 @@ module CapistranoMulticonfigParallel
|
|
5
5
|
class Job
|
6
6
|
include CapistranoMulticonfigParallel::ApplicationHelper
|
7
7
|
|
8
|
-
attr_reader :options, :application, :manager, :bundler_status
|
9
|
-
attr_writer :status, :exit_status, :bundler_status, :new_jobs_dispatched, :will_dispatch_new_job
|
8
|
+
attr_reader :options, :application, :manager, :bundler_status, :bundler_check_status
|
9
|
+
attr_writer :status, :exit_status, :bundler_status, :new_jobs_dispatched, :will_dispatch_new_job, :bundler_check_status
|
10
10
|
|
11
11
|
delegate :stderr_buffer,
|
12
12
|
to: :manager
|
@@ -43,7 +43,9 @@ module CapistranoMulticonfigParallel
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def terminal_row
|
46
|
-
if
|
46
|
+
if bundler_check_status
|
47
|
+
bundler_check_terminal_row
|
48
|
+
elsif bundler_status
|
47
49
|
bundler_terminal_row
|
48
50
|
else
|
49
51
|
[
|
@@ -56,6 +58,14 @@ module CapistranoMulticonfigParallel
|
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
61
|
+
def bundler_check_terminal_row
|
62
|
+
[
|
63
|
+
{ value: id.to_s },
|
64
|
+
{ value: wrap_string(File.basename(job.job_path)) },
|
65
|
+
{ value: "bundle check || bundle install" },
|
66
|
+
{ value: bundler_check_status.to_s }
|
67
|
+
]
|
68
|
+
end
|
59
69
|
|
60
70
|
def bundler_terminal_row
|
61
71
|
[
|
@@ -99,6 +109,7 @@ module CapistranoMulticonfigParallel
|
|
99
109
|
{ name: 'status', default: :unstarted },
|
100
110
|
{ name: 'exit_status', default: nil },
|
101
111
|
{ name: 'bundler_status', default: nil },
|
112
|
+
{ name: 'bundler_check_status', default: nil },
|
102
113
|
{ name: 'new_jobs_dispatched', default: [] },
|
103
114
|
{ name: 'will_dispatch_new_job', default: nil },
|
104
115
|
].each do |hash|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano_multiconfig_parallel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bogdanRada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: celluloid
|
@@ -259,25 +259,25 @@ dependencies:
|
|
259
259
|
- !ruby/object:Gem::Version
|
260
260
|
version: 0.0.16
|
261
261
|
- !ruby/object:Gem::Dependency
|
262
|
-
name:
|
262
|
+
name: powerbar
|
263
263
|
requirement: !ruby/object:Gem::Requirement
|
264
264
|
requirements:
|
265
265
|
- - "~>"
|
266
266
|
- !ruby/object:Gem::Version
|
267
|
-
version: '1.
|
267
|
+
version: '1.0'
|
268
268
|
- - ">="
|
269
269
|
- !ruby/object:Gem::Version
|
270
|
-
version: 1.
|
270
|
+
version: 1.0.17
|
271
271
|
type: :runtime
|
272
272
|
prerelease: false
|
273
273
|
version_requirements: !ruby/object:Gem::Requirement
|
274
274
|
requirements:
|
275
275
|
- - "~>"
|
276
276
|
- !ruby/object:Gem::Version
|
277
|
-
version: '1.
|
277
|
+
version: '1.0'
|
278
278
|
- - ">="
|
279
279
|
- !ruby/object:Gem::Version
|
280
|
-
version: 1.
|
280
|
+
version: 1.0.17
|
281
281
|
- !ruby/object:Gem::Dependency
|
282
282
|
name: rake
|
283
283
|
requirement: !ruby/object:Gem::Requirement
|
@@ -504,6 +504,7 @@ files:
|
|
504
504
|
- lib/capistrano_multiconfig_parallel/all.rb
|
505
505
|
- lib/capistrano_multiconfig_parallel/application.rb
|
506
506
|
- lib/capistrano_multiconfig_parallel/base.rb
|
507
|
+
- lib/capistrano_multiconfig_parallel/celluloid/bundler_terminal_table.rb
|
507
508
|
- lib/capistrano_multiconfig_parallel/celluloid/bundler_worker.rb
|
508
509
|
- lib/capistrano_multiconfig_parallel/celluloid/celluloid_manager.rb
|
509
510
|
- lib/capistrano_multiconfig_parallel/celluloid/celluloid_worker.rb
|