Project

simple_pid

0.01
Repository is archived
No commit activity in last 3 years
No release in over 3 years
A simple, but complete library for managing pidfiles.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

simple_pid¶ ↑

This is a simple library for managing pid files. It was extracted from Kenneth Kalmer’s excellent daemon-kit project (github.com/kennethkalmer/daemon-kit). The daemon-kit framework is amazing for bootstrapping your daemons, but if you need something more lightweight (e.g., a single file daemon), then you’re out of luck (for now). In the mean time, there weren’t any obvious, simple pid file management libraries that you could trust. This one works well and has facilities to ensure the process the pid file is pointing to is still running, so you can handle stale pid files easily.

Usage¶ ↑

Some samples of the most common uses:

require 'rubygems'
require 'simple_pid'

pid = SimplePid.new("/path/to/your.pid")

if pid.exists?
  unless pid.running?
    pid.cleanup
    pid.write!
  end
else
  pid.write!
end

Most of the above is fairly self-explanatory. You can accomplish all of the above by calling:

SimplePid.drop("/path/to/your.pid")

If the path specified for the pid is unwritable for any reason, it falls back to using /tmp to store the

You can cleanup quickly with:

SimplePid.cleanup("/path/to/your.pid")

The above cleanup class method returns true if the process wasn’t running and the cleanup was actually run. It returns false if the process was still running and no cleanup occurred. If you need to force cleanup regardless of whether the process is running or not, you can do so with:

SimplePid.cleanup!("/path/to/your.pid")

You can check to see if the process is running and exit with an error message if it is like this:

pid.ensure_stopped!

The current contents of the pid file can always be accessed like this:

pid.pid

Copyright © 2010 Joel Watson. Portions copyright Kenneth Kalmer. See LICENSE for details.