Class: MQueue::Daemon

Inherits:
Object
  • Object
show all
Defined in:
lib/m_queue/daemon.rb

Constant Summary collapse

PID_DIR =
File.join(MQUEUE_ROOT, 'tmp', 'pids')

Class Method Summary collapse

Class Method Details

.daemonize!(name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/m_queue/daemon.rb', line 6

def daemonize!(name)
  fork do
    Process.setsid
    exit if fork
    store_pid(Process.pid, name)
    Dir.chdir File.dirname(__FILE__)
    puts "created PID: #{Process.pid}"
    File.umask 0000
    STDIN.reopen "/dev/null"
    STDOUT.reopen "/dev/null", "a"
    STDERR.reopen STDOUT
    trap("TERM") { exit }
    yield if block_given?
  end
end

.kill!(name) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/m_queue/daemon.rb', line 22

def kill!(name)
  Dir[pid_path(name)].each do |f|
    begin
      puts f
      pid = IO.read(f).chomp.to_i
      FileUtils.rm f
      Process.kill(15, pid) # TERM
      puts "killed PID: #{pid}"
    rescue => e
      puts "Failed to kill! #{f}: #{e}"
    end
  end
  true
end

.kill_all!Object



37
38
39
# File 'lib/m_queue/daemon.rb', line 37

def kill_all!
  kill!('*')
end