Module: Lokka::Sh::Forkable

Includes:
Helpers
Included in:
Bundler, Rake, Sinatra
Defined in:
lib/lokka/sh/forkable.rb

Instance Method Summary collapse

Methods included from Helpers

#lesspipe

Instance Method Details

#_invokeObject

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/lokka/sh/forkable.rb', line 15

def _invoke
  raise NotImplementedError
end

#after_fork(&block) ⇒ Object



23
24
25
# File 'lib/lokka/sh/forkable.rb', line 23

def after_fork(&block)
  @after_fork = block
end

#before_fork(&block) ⇒ Object



19
20
21
# File 'lib/lokka/sh/forkable.rb', line 19

def before_fork(&block)
  @before_fork = block
end

#invoke(line, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/lokka/sh/forkable.rb', line 6

def invoke(line, options = {})
  run_before_fork
  pid = fork do
    run_after_fork
    _invoke(line)
  end
  Process.waitpid(pid)
end

#run_after_fork(&block) ⇒ Object



31
32
33
# File 'lib/lokka/sh/forkable.rb', line 31

def run_after_fork(&block)
  @after_fork.call if @after_fork
end

#run_before_fork(&block) ⇒ Object



27
28
29
# File 'lib/lokka/sh/forkable.rb', line 27

def run_before_fork(&block)
  @before_fork.call if @before_fork
end