Skip to content

Manages and spawns worker threads to run arbitrary shell commands.

Notifications You must be signed in to change notification settings

lsegal/mob_spawner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Manages and spawns worker threads to run arbitrary shell commands.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages