class PidFileBlock::Application

Public Class Methods

do_exit(pid_file_block, exit_code) click to toggle source

def self.run_application end

# 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) { || ... } click to toggle source
# 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