Sha256: cb40752402359373148c7e2de86aad7ef56a921bcb3cef41bf9e7f5936ac3aa1
Contents?: true
Size: 1.37 KB
Versions: 4
Compression:
Stored size: 1.37 KB
Contents
module Appsignal class Hooks class DelayedJobPlugin < ::Delayed::Plugin include Appsignal::Hooks::Helpers callbacks do |lifecycle| lifecycle.around(:invoke_job) do |job, &block| invoke_with_instrumentation(job, block) end lifecycle.after(:loop) do |loop| Appsignal.stop end end def self.invoke_with_instrumentation(job, block) class_and_method_name = if job.payload_object.respond_to?(:appsignal_name) job.payload_object.appsignal_name else job.name end class_name, method_name = class_and_method_name.split('#') Appsignal.monitor_transaction( 'perform_job.delayed_job', :class => class_name, :method => method_name, :metadata => { :id => job.id, :queue => job.queue, :priority => job.priority || 0, :attempts => job.attempts || 0 }, :params => format_args(job.payload_object.args), :queue_start => job.created_at ) do block.call(job) end end def self.format_args(args) args.map do |arg| self.truncate(self.string_or_inspect(arg)) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems