Class: Datadog::CI::Contrib::Integration
- Inherits:
-
Object
- Object
- Datadog::CI::Contrib::Integration
- Defined in:
- lib/datadog/ci/contrib/integration.rb
Direct Known Subclasses
Ciqueue::Integration, Cucumber::Integration, Knapsack::Integration, Minitest::Integration, RSpec::Integration, Selenium::Integration, Simplecov::Integration
Class Method Summary collapse
Instance Method Summary collapse
-
#available? ⇒ Boolean
Is the target available to be instrumented? (e.g. gem installed?).
-
#compatible? ⇒ Boolean
Is this instrumentation compatible with the available target? (e.g. minimum version met?).
-
#configuration ⇒ Object
returns the configuration instance.
- #configure(options = {}, &block) ⇒ Object
-
#dependants ⇒ Object
List of integrations names that depend on this integration.
- #enabled ⇒ Object
-
#late_instrument? ⇒ Boolean
Can the patch for this integration be applied automatically?.
-
#loaded? ⇒ Boolean
Is the target loaded into the application? (e.g. gem required? Constant defined?).
-
#new_configuration ⇒ Datadog::CI::Contrib::Settings
Returns a new configuration object for this integration.
-
#patchable? ⇒ Boolean
Can the patch for this integration be applied?.
- #patched? ⇒ Boolean
-
#patcher ⇒ Contrib::Patcher
The patcher module to inject instrumented objects into the instrumentation target.
-
#version ⇒ Object
Version of the integration target code in the environment.
Class Method Details
.inherited(subclass) ⇒ Object
10 11 12 |
# File 'lib/datadog/ci/contrib/integration.rb', line 10 def self.inherited(subclass) Instrumentation.register_integration(subclass) end |
Instance Method Details
#available? ⇒ Boolean
Is the target available to be instrumented? (e.g. gem installed?)
The target doesn’t have to be loaded (e.g. ‘require`) yet, but needs to be able to be loaded before instrumentation can commence.
By default, #available? checks if #version returned a non-nil object.
If the target for instrumentation has concept of versioning, override #version, otherwise override #available? and implement a custom target presence check.
42 43 44 |
# File 'lib/datadog/ci/contrib/integration.rb', line 42 def available? !version.nil? end |
#compatible? ⇒ Boolean
Is this instrumentation compatible with the available target? (e.g. minimum version met?)
58 59 60 |
# File 'lib/datadog/ci/contrib/integration.rb', line 58 def compatible? available? end |
#configuration ⇒ Object
returns the configuration instance.
71 72 73 |
# File 'lib/datadog/ci/contrib/integration.rb', line 71 def configuration @configuration ||= new_configuration end |
#configure(options = {}, &block) ⇒ Object
75 76 77 78 |
# File 'lib/datadog/ci/contrib/integration.rb', line 75 def configure( = {}, &block) configuration.configure(, &block) configuration end |
#dependants ⇒ Object
List of integrations names that depend on this integration. Specify when you might need to automatically instrument other integrations (like test runner for the test framework).
17 18 19 |
# File 'lib/datadog/ci/contrib/integration.rb', line 17 def dependants [] end |
#enabled ⇒ Object
80 81 82 |
# File 'lib/datadog/ci/contrib/integration.rb', line 80 def enabled configuration.enabled end |
#late_instrument? ⇒ Boolean
Can the patch for this integration be applied automatically?
116 117 118 |
# File 'lib/datadog/ci/contrib/integration.rb', line 116 def late_instrument? false end |
#loaded? ⇒ Boolean
Is the target loaded into the application? (e.g. gem required? Constant defined?)
The target’s objects should be ready to be referenced by the instrumented when loaded returns ‘true`.
52 53 54 |
# File 'lib/datadog/ci/contrib/integration.rb', line 52 def loaded? true end |
#new_configuration ⇒ Datadog::CI::Contrib::Settings
Returns a new configuration object for this integration.
This method normally needs to be overridden for each integration as their settings, defaults and environment variables are specific for each integration.
127 128 129 |
# File 'lib/datadog/ci/contrib/integration.rb', line 127 def new_configuration Datadog::CI::Contrib::Settings.new end |
#patchable? ⇒ Boolean
Can the patch for this integration be applied?
By default, this is equivalent to #available?, #loaded?, and #compatible? all being truthy.
66 67 68 |
# File 'lib/datadog/ci/contrib/integration.rb', line 66 def patchable? available? && loaded? && compatible? end |
#patched? ⇒ Boolean
110 111 112 |
# File 'lib/datadog/ci/contrib/integration.rb', line 110 def patched? patcher&.patched? end |
#patcher ⇒ Contrib::Patcher
90 91 92 |
# File 'lib/datadog/ci/contrib/integration.rb', line 90 def patcher nil end |
#version ⇒ Object
Version of the integration target code in the environment.
This is the gem version, when the instrumentation target is a Ruby gem.
If the target for instrumentation has concept of versioning, override #version, otherwise override #available? and implement a custom target presence check.
28 29 30 |
# File 'lib/datadog/ci/contrib/integration.rb', line 28 def version nil end |