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
|