theforeman/smart-proxy

View on GitHub
lib/daemon.rb

Summary

Maintainability
A
1 hr
Test Coverage
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 0022                  # 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