Module: Datadog::Contrib::Rack::Patcher

Defined in:
lib/ddtrace/contrib/rack/patcher.rb

Overview

Applies multiple patches

Constant Summary collapse

PATCHERS =
[
  MiddlewarePatcher,
  MiddlewareNamePatcher
].freeze

Class Method Summary collapse

Class Method Details

.get_option(option) ⇒ Object



100
101
102
# File 'lib/ddtrace/contrib/rack/patcher.rb', line 100

def get_option(option)
  Datadog.configuration[:rack].get_option(option)
end

.patchObject



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/ddtrace/contrib/rack/patcher.rb', line 84

def patch
  MiddlewarePatcher.patch unless MiddlewarePatcher.patched?

  # Patch middleware names
  if !MiddlewareNamePatcher.patched? && get_option(:middleware_names)
    if get_option(:application)
      MiddlewareNamePatcher.patch
    else
      Datadog.logger.warn(%(
      Rack :middleware_names requires you to also pass :application.
      Middleware names have NOT been patched; please provide :application.
      e.g. use: :rack, middleware_names: true, application: my_rack_app).freeze)
    end
  end
end

.patched?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/ddtrace/contrib/rack/patcher.rb', line 76

def patched?
  PATCHERS.all?(&:patched?)
end

.target_versionObject



80
81
82
# File 'lib/ddtrace/contrib/rack/patcher.rb', line 80

def target_version
  Integration.version
end