Module: Siding::LifeCycle

Defined in:
lib/siding/life_cycle.rb

Defined Under Namespace

Classes: Hook, HookError

Constant Summary collapse

SERVER_SIGNALS =
%w[TERM INT].freeze

Class Method Summary collapse

Class Method Details

.after_fork(name = nil, &block) ⇒ Object



27
28
29
# File 'lib/siding/life_cycle.rb', line 27

def after_fork(name = nil, &block)
  register(after_fork_hooks, name, block)
end

.after_fork_hooksObject



33
# File 'lib/siding/life_cycle.rb', line 33

def after_fork_hooks = @after_fork_hooks ||= []

.before_fork(name = nil, &block) ⇒ Object



23
24
25
# File 'lib/siding/life_cycle.rb', line 23

def before_fork(name = nil, &block)
  register(before_fork_hooks, name, block)
end

.before_fork_hooksObject



31
# File 'lib/siding/life_cycle.rb', line 31

def before_fork_hooks = @before_fork_hooks ||= []

.inherited_signal_handlersObject



51
# File 'lib/siding/life_cycle.rb', line 51

def inherited_signal_handlers = @inherited_signal_handlers ||= {}

.prepare_for_forkObject

For Server



42
43
44
45
# File 'lib/siding/life_cycle.rb', line 42

def prepare_for_fork
  disconnect_database
  run_hooks(before_fork_hooks, :before_fork)
end

.remember_signal_handler(signal, previous) ⇒ Object



47
48
49
# File 'lib/siding/life_cycle.rb', line 47

def remember_signal_handler(signal, previous)
  inherited_signal_handlers[signal] = previous
end

.repair_after_forkObject

For Worker



55
56
57
58
59
60
# File 'lib/siding/life_cycle.rb', line 55

def repair_after_fork
  restore_inherited_signal_handlers
  reseed_random
  reconnect_database
  run_hooks(after_fork_hooks, :after_fork)
end

.reset!Object



35
36
37
38
# File 'lib/siding/life_cycle.rb', line 35

def reset!
  @before_fork_hooks = []
  @after_fork_hooks = []
end

.restore_inherited_signal_handlersObject



62
63
64
65
66
67
68
69
# File 'lib/siding/life_cycle.rb', line 62

def restore_inherited_signal_handlers
  SERVER_SIGNALS.each do |signal|
    previous = inherited_signal_handlers[signal]
    Signal.trap(signal, previous.nil? ? "DEFAULT" : previous)
  rescue ArgumentError, SystemCallError
    nil
  end
end