Module: Serf::Handler
- Defined in:
- lib/serf/handler.rb,
lib/serf/handler/cli.rb,
lib/serf/handler/task.rb,
lib/serf/handler/event.rb,
lib/serf/handler/version.rb,
lib/serf/handler/tasklist.rb
Defined Under Namespace
Classes: Cli, Event, Task, TaskList
Constant Summary
collapse
- Tasks =
TaskList.new
- VERSION =
"1.1.2"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.find_serf_handler_directories ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/serf/handler.rb', line 70
def find_serf_handler_directories
sources = []
sources << File.join(Dir.pwd,'.serf-handler')
sources << File.join(Dir.home, '.serf-handler') if Dir.home rescue nil
sources << '/etc/serf/handlers/.serf-handler'
sources.select {|s| FileTest.exist?(s)}
end
|
.load_tasks ⇒ Object
61
62
63
64
65
66
67
68
|
# File 'lib/serf/handler.rb', line 61
def load_tasks
sources = []
sources << ENV['SERF_HANDLER_CONFIG'] if ENV['SERF_HANDLER_CONFIG']
sources += find_serf_handler_directories
source = sources.collect {|s| File.join(s, 'config.rb')}.
select {|s| FileTest.exist?(s)}.first
require File.expand_path(source) if source
end
|
.run ⇒ Object
46
47
48
49
50
|
# File 'lib/serf/handler.rb', line 46
def run
load_tasks
result = run_tasks
STDOUT.write ( result.length > 1 ? result.to_json : result.first )
end
|
.run_tasks ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/serf/handler.rb', line 78
def run_tasks
result = []
Tasks.sort.each do |task|
next if task.type && task.type != event.type
begin
if task.type == :event && ( task.name.to_s.empty? || task.name.to_s == event.name.to_s )
task.call event
elsif task.type == :query && ( task.name.to_s.empty? || task.name.to_s == event.name.to_s )
result << task.call( event )
end
rescue Exception => e
result << "ERROR: #{e}"
end
end
result
end
|
Instance Method Details
#describe(*strings) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/serf/handler.rb', line 12
def describe(*strings)
description = ''
strings.each do |line|
if description[-1] =~ /[^\s]/ && line[0] =~ /[^\s]/
description << " #{line}"
else
description << line
end
end
@_handler_description = description
end
|
#on(*args, &block) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/serf/handler.rb', line 25
def on(*args, &block)
if Hash === args.first
type = args[:type]
name = args[:name]
order = args[:order]
else
type, name, order = *args
end
type = :event if type == :user
type ||= :query
name ||= nil
order ||= 0
desc = @_handler_description
@_handler_description = ''
Tasks << Task.new(type, name, order, desc, &block)
end
|