Module: RubyIsForked::ForkCallback

Defined in:
lib/ruby_is_forked/fork_callback.rb

Defined Under Namespace

Modules: ModuleMethods

Constant Summary collapse

CALLBACK_IN_CHILD =
[ ]
CALLBACK_BEFORE_CHILD =
[ ]
CALLBACK_IN_PARENT =
[ ]

Class Method Summary collapse

Class Method Details

.add_callback_before_child!(proc = nil, &block) ⇒ Object



36
37
38
39
40
# File 'lib/ruby_is_forked/fork_callback.rb', line 36

def self.add_callback_before_child! proc = nil, &block
  proc ||= block
  CALLBACK_BEFORE_CHILD << proc
  proc
end

.add_callback_in_child!(proc = nil, &block) ⇒ Object



27
28
29
30
31
# File 'lib/ruby_is_forked/fork_callback.rb', line 27

def self.add_callback_in_child! proc = nil, &block
  proc ||= block
  CALLBACK_IN_CHILD << proc
  proc
end

.add_callback_in_parent!(proc = nil, &block) ⇒ Object



45
46
47
48
49
# File 'lib/ruby_is_forked/fork_callback.rb', line 45

def self.add_callback_in_parent! proc = nil, &block
  proc ||= block
  CALLBACK_IN_PARENT << proc
  proc
end

.extended(target) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/ruby_is_forked/fork_callback.rb', line 14

def self.extended target
  super
  target.extend(ModuleMethods)
  target.instance_eval do
    alias :fork_without_callback :fork unless method_defined? :fork_without_callback
    alias :fork :fork_with_callback
  end
end

.included(target) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/ruby_is_forked/fork_callback.rb', line 5

def self.included target
  super
  target.class_eval do
    include ModuleMethods
    alias :fork_without_callback :fork unless method_defined? :fork_without_callback
    alias :fork :fork_with_callback
  end
end

.remove_callback_before_child!(proc) ⇒ Object



41
42
43
# File 'lib/ruby_is_forked/fork_callback.rb', line 41

def self.remove_callback_before_child! proc
  CALLBACK_BEFORE_CHILD.delete(proc)
end

.remove_callback_in_child!(proc) ⇒ Object



32
33
34
# File 'lib/ruby_is_forked/fork_callback.rb', line 32

def self.remove_callback_in_child! proc
  CALLBACK_IN_CHILD.delete(proc)
end

.remove_callback_in_parent!(proc) ⇒ Object



50
51
52
# File 'lib/ruby_is_forked/fork_callback.rb', line 50

def self.remove_callback_in_parent! proc
  CALLBACK_IN_PARENT.delete(proc)
end