Module: Shoryuken::Util

Overview

Utility methods shared across Shoryuken classes. Provides logging, event firing, and helper methods.

Instance Method Summary collapse

Instance Method Details

#elapsed(started_at) ⇒ Float

Calculates elapsed time in milliseconds

Parameters:

  • started_at (Time)

    the start time

Returns:

  • (Float)

    elapsed time in milliseconds



36
37
38
39
# File 'lib/shoryuken/util.rb', line 36

def elapsed(started_at)
  # elapsed in ms
  (Time.now - started_at) * 1000
end

#fire_event(event, reverse = false, event_options = {}) ⇒ void

This method returns an undefined value.

Fires a lifecycle event to all registered handlers

Parameters:

  • event (Symbol)

    the event name to fire

  • reverse (Boolean) (defaults to: false)

    whether to call handlers in reverse order

  • event_options (Hash) (defaults to: {})

    options to pass to event handlers



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/shoryuken/util.rb', line 20

def fire_event(event, reverse = false, event_options = {})
  logger.debug { "Firing '#{event}' lifecycle event" }
  arr = Shoryuken.options[:lifecycle_events][event]
  arr.reverse! if reverse
  arr.each do |block|
    block.call(event_options)
  rescue => e
    logger.warn(event: event)
    logger.warn "#{e.class.name}: #{e.message}"
  end
end

#loggerLogger

Returns the Shoryuken logger

Returns:

  • (Logger)

    the configured logger



10
11
12
# File 'lib/shoryuken/util.rb', line 10

def logger
  Shoryuken.logger
end

#unparse_queues(queues) ⇒ Array<Array>

Converts a queue array to a hash of queue names and weights

Parameters:

  • queues (Array<String>)

    array of queue names with possible duplicates

Returns:

  • (Array<Array>)

    array of [queue_name, weight] pairs



45
46
47
48
49
# File 'lib/shoryuken/util.rb', line 45

def unparse_queues(queues)
  queues.each_with_object({}) do |name, queue_and_weights|
    queue_and_weights[name] = queue_and_weights[name].to_i + 1
  end.to_a
end

#worker_name(worker_class, sqs_msg, body = nil) ⇒ String

Returns a display name for the worker processing a message

Parameters:

  • worker_class (Class)

    the worker class

  • sqs_msg (Aws::SQS::Types::Message, Array)

    the message or batch

  • body (Object, nil) (defaults to: nil)

    the parsed message body

Returns:

  • (String)

    the worker display name



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/shoryuken/util.rb', line 57

def worker_name(worker_class, sqs_msg, body = nil)
  if Shoryuken.active_job? \
      && !sqs_msg.is_a?(Array) \
      && sqs_msg.message_attributes \
      && sqs_msg.message_attributes['shoryuken_class'] \
      && sqs_msg.message_attributes['shoryuken_class'][:string_value] \
      == 'Shoryuken::ActiveJob::JobWrapper' \
      && body

    "ActiveJob/#{body['job_class']}"
  else
    worker_class.to_s
  end
end