[ANN] slave-0.0.1

URIS

http://codeforpeople.com/lib/ruby/slave/
http://rubyforge.org/frs/?group_id=1024&release_id=5631

SYNOPSIS

the Slave class forks a process and starts a drb server in the child
using
any object as the server. the process is detached so it is not
required
(nor possible) to wait on the child pid. a Heartbeat is set up
between the
parent and child processes so that the child will exit of the parent
exits
for any reason - preventing orphaned slaves from running
indefinitely. the
purpose of Slaves is to be able to easily set up a collection of
objects
communicating via drb protocols instead of having to use IPC.

typical usage:

 obj = AnyClass::new

                                 #
 slave = Slave::new obj          # object becomes drb server in 

another
# process

 p slave.object                  # handle on drb object
 p slave.uri                     # uri of the drb object
 p slave.socket                  # unix domain socket path for drb 

object
p slave.psname # title shown in ps/top

 obj = slave.object

                                 #
 p obj.method                    # call a method on drb server in 

another
# process

other usage:

set the pulse_rate used for the Heartbeat

 slave = Slave::new MyClass::new, 'pulse_rate' => 10

same

 Slave::pulse_rate = 10
 slave = Slave::new MyClass::new

same

 ENV['SLAVE_PULSE_RATE'] = 10
 slave = Slave::new MyClass::new

slaves may be configured via the environment, the Slave class, or via
the
ctor
for object itself. attributes which may be configured include

  • socket_creation_attempts
  • pulse_rate
  • psname
  • debug

INSTALL

gem install slave

enjoy.

-a

suffering increases your inner strength. also, the wishing for
suffering
makes the suffering disappear.

  • h.h. the 14th dali lama