class SSHKit::Custom::Runner::Group

A runner which executes all commands in groups.

Attributes

group_size[W]

Public Instance Methods

apply_block_to_bcks(&block) click to toggle source

Executes all commands in batches of size :group_size @yields the actual host

# File lib/sshkit/custom/runner/group.rb, line 11
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) click to toggle source

@api private

# File lib/sshkit/custom/runner/group.rb, line 25
def exec_parallel(group, &block)
  use_runner.call(options).tap do |runner|
    runner.backends = group
    runner.apply_block_to_bcks(&block)
  end
end
group_size() click to toggle source

@api private

# File lib/sshkit/custom/runner/group.rb, line 20
def group_size
  @group_size ||= options[:limit] || 2
end
use_runner() click to toggle source

@api private

# File lib/sshkit/custom/runner/group.rb, line 33
def use_runner
  ->(options) { Parallel.new(options) }
end