Sha256: 16a8eeb03f0f696c3e779e514afd34f33198765a7e94469d8c593a8bf1aaea3f

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

module Appsignal
  class Hooks
    class SidekiqPlugin
      include Appsignal::Hooks::Helpers

      def job_keys
        @job_keys ||= Set.new(%w(
            class args retried_at failed_at
            error_message error_class backtrace
            error_backtrace enqueued_at retry
        ))
      end

      def call(worker, item, queue)
        Appsignal.monitor_transaction(
          'perform_job.sidekiq',
          :class       => item['wrapped'] || item['class'],
          :method      => 'perform',
          :metadata    => formatted_metadata(item),
          :params      => format_args(item['args']),
          :queue_start => item['enqueued_at']
        ) do
          yield
        end
      end

      def formatted_metadata(item)
        {}.tap do |hsh|
          item.each do |key, val|
            hsh[key] = truncate(string_or_inspect(val)) unless job_keys.include?(key)
          end
        end
      end

      def format_args(args)
        args.map do |arg|
          truncate(string_or_inspect(arg))
        end
      end
    end

    class SidekiqHook < Appsignal::Hooks::Hook
      register :sidekiq

      def dependencies_present?
        defined?(::Sidekiq)
      end

      def install
        ::Sidekiq.configure_server do |config|
          config.server_middleware do |chain|
            chain.add Appsignal::Hooks::SidekiqPlugin
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
appsignal-0.12.rc.13 lib/appsignal/hooks/sidekiq.rb
appsignal-0.12.rc.12 lib/appsignal/hooks/sidekiq.rb
appsignal-0.12.rc.11 lib/appsignal/hooks/sidekiq.rb
appsignal-0.12.rc.10 lib/appsignal/hooks/sidekiq.rb