Sha256: 5c370bead4da366aa93c5a89450f596746e58090b713ba797d62cf459d6fff8a
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
# frozen_string_literal: true require "appsignal" require_relative "appsignal_ext" require "securerandom" # Remove Appsignal's own Que integration hook, so the Snowpack-hosted # integration can be included manually. Appsignal::Hooks.hooks.delete :que module Snowpack module Instrumentation module Appsignal module Que # Enable like so: # # Que.error_notifier = Snowpack::Instrumentation::Appsignal::Que::ErrorNotifier ErrorNotifier = proc do |error, _job| ::Appsignal::Transaction.current.set_error(error) end def self.included(base) base.class_eval do def _run_with_appsignal(*args) env = { :metadata => { :id => attrs[:job_id], :queue => attrs[:queue], :run_at => attrs[:run_at].to_s, :priority => attrs[:priority], :attempts => attrs[:error_count].to_i }, :params => attrs[:args] } request = ::Appsignal::Transaction::GenericRequest.new(env) transaction = ::Appsignal::Transaction.create( SecureRandom.uuid, ::Appsignal::Transaction::BACKGROUND_JOB, request, ) transaction.discard! unless instrument? begin ::Appsignal.instrument("perform_job.que") { _run_without_appsignal(*args) } rescue Exception => error transaction.set_error(error) raise error ensure transaction.set_action "#{attrs[:job_class]}#run" ::Appsignal::Transaction.complete_current! end end alias_method :_run_without_appsignal, :_run alias_method :_run, :_run_with_appsignal def instrument? true end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
snowpack-1.0.0.alpha7 | lib/snowpack/instrumentation/appsignal/que.rb |
snowpack-1.0.0.alpha6 | lib/snowpack/instrumentation/appsignal/que.rb |