Class: PidFileBlock::Application

Inherits:
Object
  • Object
show all
Defined in:
lib/pid_file_block/application.rb

Class Method Summary collapse

Class Method Details

.do_exit(pid_file_block, exit_code) ⇒ Object

def self.run_application end



12
13
14
15
# File 'lib/pid_file_block/application.rb', line 12

def self.do_exit(pid_file_block, exit_code)
  pid_file_block.release if pid_file_block
  exit exit_code
end

.run(piddir:, pidfile:, exit_code_normal: 0, exit_code_process_exists_error: 1, exit_code_interrupt: 2) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/pid_file_block/application.rb', line 17

def self.run(piddir:,
             pidfile:,
             exit_code_normal: 0,
             exit_code_process_exists_error: 1,
             exit_code_interrupt: 2)
  pid_file_block = nil
  Signal.trap('TERM') do
    do_exit(pid_file_block, exit_code_interrupt)
  end
  Signal.trap('INT') do
    do_exit(pid_file_block, exit_code_interrupt)
  end
  pid_file_block = PidFileBlock.new(piddir: piddir, pidfile: pidfile)
  begin
    pid_file_block.open do
      yield
    end
  rescue PidFileBlock::ProcessExistsError
    STDERR.puts "Error: process exists (see pid in file #{pid_file_block.pid_file_full_name})."
    exit exit_code_process_exists_error
  end
  exit exit_code_normal
end