Class: Temporalio::Runtime
- Inherits:
-
Object
- Object
- Temporalio::Runtime
- Defined in:
- lib/temporalio/runtime.rb,
lib/temporalio/runtime/metric_buffer.rb
Overview
Runtime for Temporal Ruby SDK.
Only one global Runtime needs to exist. Users are encouraged to use Runtime.default. To configure it, create a runtime before any clients are created, and set it via Runtime.default=. Every time a new runtime is created, a new internal Rust thread pool is created.
Defined Under Namespace
Classes: LoggingFilterOptions, LoggingOptions, MetricBuffer, MetricsOptions, OpenTelemetryMetricsOptions, PrometheusMetricsOptions, TelemetryOptions
Instance Attribute Summary collapse
-
#metric_meter ⇒ Metric::Meter
readonly
Metric meter that can create and record metric values.
Class Method Summary collapse
-
.default ⇒ Runtime
Default runtime, lazily created upon first access.
-
.default=(runtime) ⇒ Object
Set the default runtime.
Instance Method Summary collapse
-
#initialize(telemetry: TelemetryOptions.new) ⇒ Runtime
constructor
Create new Runtime.
Constructor Details
#initialize(telemetry: TelemetryOptions.new) ⇒ Runtime
Create new Runtime. For most users, this should only be done once globally. In addition to creating a Rust thread pool, this also consumes a Ruby thread for its lifetime.
316 317 318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/temporalio/runtime.rb', line 316 def initialize(telemetry: TelemetryOptions.new) # Set runtime on the buffer which will fail if the buffer is used on another runtime telemetry.metrics&.buffer&._set_runtime(self) @core_runtime = Internal::Bridge::Runtime.new( Internal::Bridge::Runtime::Options.new(telemetry: telemetry._to_bridge) ) @metric_meter = Internal::Metric::Meter.create_from_runtime(self) || Metric::Meter.null # We need a thread to run the command loop # TODO(cretz): Is this something users should be concerned about or need control over? Thread.new do @core_runtime.run_command_loop end end |
Instance Attribute Details
#metric_meter ⇒ Metric::Meter (readonly)
Returns Metric meter that can create and record metric values.
310 311 312 |
# File 'lib/temporalio/runtime.rb', line 310 def metric_meter @metric_meter end |
Class Method Details
.default ⇒ Runtime
295 296 297 |
# File 'lib/temporalio/runtime.rb', line 295 def self.default @default ||= Runtime.new end |
.default=(runtime) ⇒ Object
Set the default runtime. Must be called before default accessed.
303 304 305 306 307 |
# File 'lib/temporalio/runtime.rb', line 303 def self.default=(runtime) raise 'Runtime already set or requested' unless @default.nil? @default = runtime end |