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



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

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

.patchObject



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

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)


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

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

.target_versionObject



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

def target_version
  Integration.version
end