Class: Workhorse::Daemon::ShellHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/workhorse/daemon/shell_handler.rb

Class Method Summary collapse

Class Method Details

.run(options = {}, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/workhorse/daemon/shell_handler.rb', line 3

def self.run(options = {}, &block)
  unless ARGV.count == 1
    usage
    exit 99
  end

  lockfile_path = options.delete(:lockfile) || 'workhorse.lock'
  lockfile = File.open(lockfile_path, 'a')
  lockfile.flock(File::LOCK_EX || File::LOCK_NB)

  daemon = Workhorse::Daemon.new(options, &block)

  begin
    case ARGV.first
    when 'start'
      exit daemon.start
    when 'stop'
      exit daemon.stop
    when 'status'
      exit daemon.status
    when 'watch'
      exit daemon.watch
    when 'restart'
      exit daemon.restart
    when 'usage'
      usage
      exit 99
    else
      usage
    end

    exit 0
  rescue => e
    warn "#{e.message}\n#{e.backtrace.join("\n")}"
    exit 99
  ensure
    lockfile.flock(File::LOCK_UN)
  end
end

.usageObject



43
44
45
46
47
48
49
50
51
52
# File 'lib/workhorse/daemon/shell_handler.rb', line 43

def self.usage
  warn "    Usage: \#{$PROGRAM_NAME} start|stop|status|watch|restart|usage\n\n    Exit status:\n     0  if OK,\n     1  if at least one worker has an unexpected status,\n     99 on all other errors.\n  USAGE\nend\n"