Class: Kaal::SignalHandlerInstaller

Inherits:
Object
  • Object
show all
Defined in:
lib/kaal/runtime/signal_handler_installer.rb

Overview

Installs signal handlers while preserving the previous handlers for chaining.

Constant Summary collapse

SIGNALS =
%w[TERM INT].freeze
IGNORE_HANDLER =
'IGNORE'

Instance Method Summary collapse

Constructor Details

#initialize(signal_module: Signal) ⇒ SignalHandlerInstaller

Returns a new instance of SignalHandlerInstaller.



13
14
15
# File 'lib/kaal/runtime/signal_handler_installer.rb', line 13

def initialize(signal_module: Signal)
  @signal_module = signal_module
end

Instance Method Details

#install(signals: SIGNALS) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/kaal/runtime/signal_handler_installer.rb', line 17

def install(signals: SIGNALS)
  signals.each_with_object({}) do |signal, previous_handlers|
    previous_handler = capture_previous_handler(signal)
    @signal_module.trap(signal) { yield(signal, previous_handler) }
    previous_handlers[signal] = previous_handler
  end
end