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