Sha256: e314d80f2d96e27985c54b22d2baee032568c5a1b1a9e17a6e02a56794a4a5ba

Contents?: true

Size: 1.51 KB

Versions: 46

Compression:

Stored size: 1.51 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
            jid retry created_at wrapped
        ))
      end

      def call(worker, item, queue)
        if item['class'] == 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper'
          params = format_args(item['args'].first['arguments'])
        else
          params = format_args(item['args'])
        end

        Appsignal.monitor_transaction(
          'perform_job.sidekiq',
          :class       => item['wrapped'] || item['class'],
          :method      => 'perform',
          :metadata    => formatted_metadata(item),
          :params      => params,
          :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
    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

46 entries across 46 versions & 1 rubygems

Version Path
appsignal-1.2.1.beta.2 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.1.beta.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.beta.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.6 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.5 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.4 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.9 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.9.beta.2 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.9.beta.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.8 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.3 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.7 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.2 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.7.beta.2 lib/appsignal/hooks/sidekiq.rb
appsignal-1.2.0.alpha.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.7.beta.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.6 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.6.beta.1 lib/appsignal/hooks/sidekiq.rb
appsignal-1.1.5 lib/appsignal/hooks/sidekiq.rb