backgroundrb help needed!

I have what I thought would be a simple thing - we use backgroundrb to
watch a directory and process new files. We want to make sure that the
worker is running. I thought I could have a schedule that started the
worker every 5 minutes to make sure, but, it loads a new one each time
(not surprising).
Is there a way to make sure that there is one (and only one) of these
workers running at all times?

Hi Phil,

BackgrounDRb or no, creating a file containing the process's PID, and
verifying that each time the process is started is the typical unixy
way to do this. How I do it:

  def self.is_running?
    if File.exists? pidfile
      begin
        Process.kill 0, pid
        return true
      rescue Errno::EPERM
        puts "You don't own this process."
        return true
      rescue Errno::ESRCH #pid doesn't exist anymore
        delete_pidfile
      end
    end
    false
  end

  def self.delete_pidfile
    File.delete pidfile
  rescue
  end

  def self.pid
    File.read(pidfile).chomp.to_i rescue nil
  end

  def self.pidfile
    "path/to/background_process.pid"
  end

And of course just create the the appropriate file writing Process.pid
to it.