Module: Datadog::Contrib::Sidekiq::Patcher

Includes:
Patcher
Defined in:
lib/ddtrace/contrib/sidekiq/patcher.rb

Overview

Patcher enables patching of 'sidekiq' module.

Class Method Summary collapse

Methods included from Patcher

included

Class Method Details

.patch ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 17

def patch
  require 'ddtrace/contrib/sidekiq/client_tracer'
  require 'ddtrace/contrib/sidekiq/server_tracer'

  ::Sidekiq.configure_client do |config|
    config.client_middleware do |chain|
      chain.add(Sidekiq::ClientTracer)
    end
  end

  ::Sidekiq.configure_server do |config|
    # If a job enqueues another job, make sure it has the same client
    # middleware.
    config.client_middleware do |chain|
      chain.add(Sidekiq::ClientTracer)
    end

    config.server_middleware do |chain|
      chain.add(Sidekiq::ServerTracer)
    end

    patch_server_internals if Integration.compatible_with_server_internal_tracing?
  end
end

.patch_server_heartbeat ⇒ Object



48
49
50
51
52
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 48

def patch_server_heartbeat
  require 'ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat'

  ::Sidekiq::Launcher.prepend(ServerInternalTracer::Heartbeat)
end

.patch_server_internals ⇒ Object



42
43
44
45
46
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 42

def patch_server_internals
  patch_server_heartbeat
  patch_server_job_fetch
  patch_server_scheduled_push
end

.patch_server_job_fetch ⇒ Object



54
55
56
57
58
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 54

def patch_server_job_fetch
  require 'ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch'

  ::Sidekiq::Processor.prepend(ServerInternalTracer::JobFetch)
end

.patch_server_scheduled_push ⇒ Object



60
61
62
63
64
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 60

def patch_server_scheduled_push
  require 'ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push'

  ::Sidekiq::Scheduled::Poller.prepend(ServerInternalTracer::ScheduledPush)
end

.target_version ⇒ Object



13
14
15
# File 'lib/ddtrace/contrib/sidekiq/patcher.rb', line 13

def target_version
  Integration.version
end