Class: SSHKit::Custom::Runner::Group

Inherits:
Abstract
  • Object
show all
Defined in:
lib/sshkit/custom/runner/group.rb

Instance Attribute Summary collapse

Attributes inherited from Abstract

#backends, #options

Instance Method Summary collapse

Methods inherited from Abstract

#active_backend, active_backend, active_backend=, #active_backend=, #apply_to_bck, create_runner, #do_wait, #initialize, scope, scope_storage, #send_cmd

Constructor Details

This class inherits a constructor from SSHKit::Custom::Runner::Abstract

Instance Attribute Details

#group_sizeObject



17
18
19
# File 'lib/sshkit/custom/runner/group.rb', line 17

def group_size
  @group_size ||= options[:limit] || 2
end

Instance Method Details

#apply_block_to_bcks(&block) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/sshkit/custom/runner/group.rb', line 7

def apply_block_to_bcks(&block)
  backends.each_slice(group_size).map do |group_backends|

    exec_parallel(group_backends, &block)

    do_wait

  end.flatten
end

#exec_parallel(group, &block) ⇒ Object



21
22
23
24
25
26
# File 'lib/sshkit/custom/runner/group.rb', line 21

def exec_parallel(group, &block)
  use_runner.call(options).tap do |runner|
    runner.backends = group
    runner.apply_block_to_bcks(&block)
  end
end

#use_runnerObject



28
29
30
# File 'lib/sshkit/custom/runner/group.rb', line 28

def use_runner
  ->(options) { Parallel.new(options) }
end