class CloudWatchMetrics::Resque::Builder

Public Class Methods

new(metrics) click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 6
def initialize(metrics)
  @metric_names = metrics.select do |key, value|
    value && key != :pending_per_queue
  end.keys
end

Public Instance Methods

build(info) click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 12
def build(info)
  @info = info

  metric_data = @metric_names.map do |key|
    build_datum(camelize(key.to_s), @info.public_send(key))
  end

  metric_data.concat(build_per_queue) if @info.queue_sizes

  metric_data
end

Private Instance Methods

build_datum(metric_name, value, dimensions = {}) click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 32
def build_datum(metric_name, value, dimensions = {})
  {
    metric_name: metric_name,
    dimensions:  default_dimensions.merge(dimensions).to_cloudwatch,
    timestamp:   @info.time,
    value:       value,
    unit:        'Count',
  }
end
build_per_queue() click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 26
def build_per_queue
  @info.queue_sizes.map do |name, size|
    build_datum('Pending', size, Queue: name)
  end
end
camelize(string) click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 46
def camelize(string)
  string.gsub(/(?:^|_)(.)/) { Regexp.last_match(1).upcase }
end
default_dimensions() click to toggle source
# File lib/cloud_watch_metrics/resque/builder.rb, line 42
def default_dimensions
  Dimensions.new(Namespace: @info.namespace.to_s)
end