Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (34 sloc) 1.42 KB

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