Class: Datadog::OpenFeature::Component
- Inherits:
-
Object
- Object
- Datadog::OpenFeature::Component
- Defined in:
- lib/datadog/open_feature/component.rb
Overview
This class is the entry point for the OpenFeature component
Instance Attribute Summary collapse
-
#engine ⇒ Object
readonly
Returns the value of attribute engine.
-
#flag_eval_evp_hook ⇒ Object
readonly
Returns the value of attribute flag_eval_evp_hook.
-
#flag_eval_metrics_hook ⇒ Object
readonly
Returns the value of attribute flag_eval_metrics_hook.
-
#span_enrichment_hook ⇒ Object
readonly
Returns the value of attribute span_enrichment_hook.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(settings, agent_settings, logger:, telemetry:) ⇒ Component
constructor
A new instance of Component.
- #shutdown! ⇒ Object
Constructor Details
#initialize(settings, agent_settings, logger:, telemetry:) ⇒ Component
Returns a new instance of Component.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/datadog/open_feature/component.rb', line 52 def initialize(settings, agent_settings, logger:, telemetry:) transport = Transport::HTTP.build(agent_settings: agent_settings, logger: logger) @worker = Exposures::Worker.new(settings: settings, transport: transport, telemetry: telemetry, logger: logger) reporter = Exposures::Reporter.new(@worker, telemetry: telemetry, logger: logger) @engine = EvaluationEngine.new(reporter, telemetry: telemetry, logger: logger) @telemetry = telemetry @logger = logger @settings = settings @agent_settings = agent_settings @flag_eval_metrics_hook = create_flag_eval_metrics_hook @flag_eval_evp_hook = create_flag_eval_evp_hook @span_enrichment_hook = create_span_enrichment_hook end |
Instance Attribute Details
#engine ⇒ Object (readonly)
Returns the value of attribute engine.
19 20 21 |
# File 'lib/datadog/open_feature/component.rb', line 19 def engine @engine end |
#flag_eval_evp_hook ⇒ Object (readonly)
Returns the value of attribute flag_eval_evp_hook.
19 20 21 |
# File 'lib/datadog/open_feature/component.rb', line 19 def flag_eval_evp_hook @flag_eval_evp_hook end |
#flag_eval_metrics_hook ⇒ Object (readonly)
Returns the value of attribute flag_eval_metrics_hook.
19 20 21 |
# File 'lib/datadog/open_feature/component.rb', line 19 def flag_eval_metrics_hook @flag_eval_metrics_hook end |
#span_enrichment_hook ⇒ Object (readonly)
Returns the value of attribute span_enrichment_hook.
19 20 21 |
# File 'lib/datadog/open_feature/component.rb', line 19 def span_enrichment_hook @span_enrichment_hook end |
Class Method Details
.build(settings, agent_settings, logger:, telemetry:) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/datadog/open_feature/component.rb', line 21 def self.build(settings, agent_settings, logger:, telemetry:) return unless settings.respond_to?(:open_feature) && settings.open_feature.enabled unless settings.respond_to?(:remote) && settings.remote.enabled = "OpenFeature could not be enabled as Remote Configuration is currently disabled. " \ "To enable Remote Configuration, see https://docs.datadoghq.com/remote_configuration/." logger.warn() return end if RUBY_ENGINE != "ruby" = "OpenFeature could not be enabled as MRI is required, " \ "but running on #{RUBY_ENGINE.inspect}" logger.warn() return end if (libdatadog_api_failure = Core::LIBDATADOG_API_FAILURE) = "OpenFeature could not be enabled as `libdatadog` is not loaded: " \ "#{libdatadog_api_failure.inspect}. For help solving this issue, " \ "please contact Datadog support at https://docs.datadoghq.com/help/." logger.warn() return end new(settings, agent_settings, logger: logger, telemetry: telemetry) end |
Instance Method Details
#shutdown! ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/datadog/open_feature/component.rb', line 68 def shutdown! @worker.graceful_shutdown @flag_eval_evp_writer&.stop # Symmetric teardown: drop any accumulated span-enrichment state and # subscriptions (Ruby CLAUDE.md mandates closing resources). @span_enrichment_hook&.shutdown end |