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

.patchObject



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_heartbeatObject



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_internalsObject



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_fetchObject



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_pushObject



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_versionObject



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

def target_version
  Integration.version
end