|
if RUBY_VERSION < "1.9"
|
|
module Process
|
|
def self.daemon(nochdir = nil, noclose = nil)
|
|
exit if fork # Parent exits, child continues.
|
|
Process.setsid # Become session leader.
|
|
exit if fork # Zap session leader. See [1].
|
|
|
|
unless nochdir
|
|
Dir.chdir "/" # Release old working directory.
|
|
end
|
|
|
|
File.umask 0000 # Ensure sensible umask. Adjust as needed.
|
|
|
|
logdir = File.join(APP_ROOT, "logs")
|
|
FileUtils.mkdir_p logdir
|
|
log = logdir +"/access.log"
|
|
unless noclose
|
|
STDIN.reopen "/dev/null" # Free file descriptors and
|
|
STDOUT.reopen log, "a" # point them somewhere sensible.
|
|
STDERR.reopen "/dev/null"
|
|
STDOUT.sync = true
|
|
end
|
|
|
|
trap("TERM") { exit }
|
|
|
|
return 0
|
|
end
|
|
end
|
|
end
|