class PUNK::Worker

Public Class Methods

perform_now(**kwargs) click to toggle source
# File lib/punk/framework/worker.rb, line 9
def self.perform_now(**kwargs)
  worker = new
  worker.define_singleton_method :logger, -> { SemanticLogger["PUNK::SKQ"] }
  worker.send(:perform, **kwargs)
end

Public Instance Methods

perform(kwargs = {}) click to toggle source
# File lib/punk/framework/worker.rb, line 15
def perform(kwargs = {})
  @_started = Time.now.utc
  logger.info "Started #{self.class.name}", kwargs.sanitize.inspect
  logger.push_tags(self.class.name)
  _init_runnable(kwargs.deep_symbolize_keys)
  raise BadRequest, "validation failed" unless valid?
  process
  nil
rescue BadRequest => e
  logger.error e.message
  logger.error errors.full_messages.to_sentence
  raise
ensure
  duration = 1000.0 * (Time.now.utc - @_started)
  logger.pop_tags
  logger.info message: "Completed #{self.class.name}", duration: duration
  SemanticLogger.flush
end