class Epi::Trigger
Attributes
args[R]
job[R]
Public Class Methods
make(job, name, args, handler)
click to toggle source
# File lib/epi/trigger.rb, line 4 def self.make(job, name, args, handler) klass_name = name.camelize klass = Triggers.const_defined?(klass_name) && Triggers.const_get(klass_name) raise Exceptions::Fatal, "No trigger exists named #{name}" unless Class === klass && klass < self klass.new job, handler, *args end
new(job, handler, *args)
click to toggle source
# File lib/epi/trigger.rb, line 13 def initialize(job, handler, *args) @job = job @handler = handler @args = args end
Public Instance Methods
logger()
click to toggle source
# File lib/epi/trigger.rb, line 19 def logger Epi.logger end
message()
click to toggle source
# File lib/epi/trigger.rb, line 23 def message nil end
try()
click to toggle source
# File lib/epi/trigger.rb, line 27 def try case self when ProcessTrigger then job.running_processes.each_value { |process| try_with process } when JobTrigger then try_with nil else nil end end
try_with(process)
click to toggle source
# File lib/epi/trigger.rb, line 35 def try_with(process) args = [process].reject(&:nil?) if test *args text = "Trigger on job #{job.id}" text << " (PID #{process.pid})" if process text << ": " << message if message logger.info text @handler.call process || job end end