Class: Temporalio::Runtime

Inherits:
Object
  • Object
show all
Defined in:
lib/temporalio/runtime.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, MetricsOptions, OpenTelemetryMetricsOptions, PrometheusMetricsOptions, TelemetryOptions

Class Method Summary collapse

Instance Method Summary collapse

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.

Parameters:

  • telemetry (TelemetryOptions) (defaults to: TelemetryOptions.new)

    Telemetry options to set.



255
256
257
258
259
260
261
262
263
264
# File 'lib/temporalio/runtime.rb', line 255

def initialize(telemetry: TelemetryOptions.new)
  @core_runtime = Internal::Bridge::Runtime.new(
    Internal::Bridge::Runtime::Options.new(telemetry: telemetry._to_bridge)
  )
  # 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

Class Method Details

.defaultRuntime

Default runtime, lazily created upon first access. If needing a different default, make sure it is updated via default= before this is called (either directly or as a parameter to something like Client).

Returns:



237
238
239
# File 'lib/temporalio/runtime.rb', line 237

def self.default
  @default ||= Runtime.new
end

.default=(runtime) ⇒ Object

Set the default runtime. Must be called before default accessed.

Parameters:

  • runtime (Runtime)

    Runtime to set as default.

Raises:

  • If default has already been accessed.



245
246
247
248
249
# File 'lib/temporalio/runtime.rb', line 245

def self.default=(runtime)
  raise 'Runtime already set or requested' unless @default.nil?

  @default = runtime
end