Manages and spawns worker threads to run arbitrary shell commands.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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


The simplest usage of MobSpawner is:

commands = ["rvm install 1.8.6", "rvm install 1.9.2", "rvm install rbx"]

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.


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 ="command1", "command2", "command3")
spawner.before_worker do |data|
  puts "Worker #{data[:worker]} about to run #{data[:command].command}"
spawner.after_worker do |data|
  puts "Worker #{data[:worker]} exited with status #{data[:status]}"
  puts "Output:"
  puts data[:output]

License & Copyright

MobSpawner is licensed under the MIT license, © 2012 Loren Segal