MobSpawner
MobSpawner manages worker threads that can run arbitrary commands and report
results. Unlike distributed queues, MobSpawner is self-contained and perfect
for small batch scripts that need to run multiple independent jobs.
Documentation is on rubydoc.org.
Usage
The simplest usage of MobSpawner is:
commands = ["rvm install 1.8.6", "rvm install 1.9.2", "rvm install rbx"]
MobSpawner.new(commands).run
The above will attempt to run the 3 commands concurrently across the default of
3 worker threads. By default commands do not report output; to get command
output, use callbacks discussed in the next section.
For more information on how to initialize a spawner, see the {MobSpawner}
documentation.
Callbacks
In addition to simply running worker threads, you can also receive reports
about each worker's execution results using callbacks. To setup a spawner
with callbacks, use {MobSpawner#before_worker} and {MobSpawner#after_worker}:
spawner = MobSpawner.new("command1", "command2", "command3")
spawner.before_worker do |data|
puts "Worker #{data[:worker]} about to run #{data[:command].command}"
end
spawner.after_worker do |data|
puts "Worker #{data[:worker]} exited with status #{data[:status]}"
puts "Output:"
puts data[:output]
end
spawner.run
License & Copyright
MobSpawner is licensed under the MIT license, © 2012 Loren Segal