module Serf::Handler
Constants
- Tasks
- VERSION
Public Class Methods
event()
click to toggle source
# File lib/serf/handler.rb, line 52 def event unless @event config = Serf::Handler::Cli.new @event = Serf::Handler::Event.new( config ) end @event end
find_serf_handler_directories()
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# 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
Public Instance Methods
describe(*strings)
click to toggle source
# 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)
click to toggle source
# 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