Module: Appsignal::Hooks::ActiveJobHook::ActiveJobHelpers

Defined in:
lib/appsignal/hooks/active_job.rb

Constant Summary collapse

ACTION_MAILER_CLASSES =
[
  "ActionMailer::DeliveryJob",
  "ActionMailer::Parameterized::DeliveryJob",
  "ActionMailer::MailDeliveryJob"
].freeze

Class Method Summary collapse

Class Method Details

.action_name(job) ⇒ Object



261
262
263
264
265
266
267
268
# File 'lib/appsignal/hooks/active_job.rb', line 261

def self.action_name(job)
  case job["job_class"]
  when *ACTION_MAILER_CLASSES
    job["arguments"][0..1].join("#")
  else
    "#{job["job_class"]}#perform"
  end
end

.add_distribution_value(key, value, tags = {}) ⇒ Object



320
321
322
# File 'lib/appsignal/hooks/active_job.rb', line 320

def self.add_distribution_value(key, value, tags = {})
  Appsignal.add_distribution_value("active_job_#{key}", value, tags)
end

.increment_counter(key, value, tags = {}) ⇒ Object



316
317
318
# File 'lib/appsignal/hooks/active_job.rb', line 316

def self.increment_counter(key, value, tags = {})
  Appsignal.increment_counter "active_job_#{key}", value, tags
end

.metrics_for(job) ⇒ Array

Returns an array of metrics with tags used to report the job metrics

If job ONLY has a queue, it will return queue_job_count with tags. If job has a queue AND priority, it will ALSO return queue_priority_job_count with tags.

Returns:

  • (Array)

    Array of metrics with tags to report.



277
278
279
280
281
282
283
284
285
286
287
288
289
290
# File 'lib/appsignal/hooks/active_job.rb', line 277

def self.metrics_for(job)
  tags = { :queue => job["queue_name"] }
  metrics = [["queue_job_count", tags]]

  priority = job["priority"]
  if priority
    metrics << [
      "queue_priority_job_count",
      tags.merge(:priority => priority)
    ]
  end

  metrics
end

.transaction_tags_for(job) ⇒ Object



292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
# File 'lib/appsignal/hooks/active_job.rb', line 292

def self.transaction_tags_for(job)
  tags = {}

  queue = job["queue_name"]
  tags[:queue] = queue if queue

  priority = job["priority"]
  tags[:priority] = priority if priority

  executions = job["executions"]
  tags[:executions] = executions.to_i + 1 if executions

  job_id = job["job_id"]
  tags[:active_job_id] = job_id

  provider_job_id = job["provider_job_id"]
  tags[:provider_job_id] = provider_job_id if provider_job_id

  request_id = provider_job_id || job_id
  tags[:request_id] = request_id if request_id

  tags
end