Module: Siding::LifeCycle
- Defined in:
- lib/siding/life_cycle.rb
Defined Under Namespace
Constant Summary collapse
- SERVER_SIGNALS =
%w[TERM INT].freeze
Class Method Summary collapse
- .after_fork(name = nil, &block) ⇒ Object
- .after_fork_hooks ⇒ Object
- .before_fork(name = nil, &block) ⇒ Object
- .before_fork_hooks ⇒ Object
- .inherited_signal_handlers ⇒ Object
-
.prepare_for_fork ⇒ Object
For Server.
- .remember_signal_handler(signal, previous) ⇒ Object
-
.repair_after_fork ⇒ Object
For Worker.
- .reset! ⇒ Object
- .restore_inherited_signal_handlers ⇒ Object
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_hooks ⇒ Object
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_hooks ⇒ Object
31 |
# File 'lib/siding/life_cycle.rb', line 31 def before_fork_hooks = @before_fork_hooks ||= [] |
.inherited_signal_handlers ⇒ Object
51 |
# File 'lib/siding/life_cycle.rb', line 51 def inherited_signal_handlers = @inherited_signal_handlers ||= {} |
.prepare_for_fork ⇒ Object
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_fork ⇒ Object
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_handlers ⇒ Object
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 |