Class: Igniter::Embed::Contractable::Runner
- Inherits:
-
Object
- Object
- Igniter::Embed::Contractable::Runner
- Defined in:
- lib/igniter/embed/contractable/runner.rb
Defined Under Namespace
Classes: ExecutionLike, OutputsLike
Constant Summary collapse
- SEVERITY_MAP =
{ observation: :info, primary_success: :info, candidate_success: :info, divergence: :warning, acceptance_failure: :warning, primary_error: :error, candidate_error: :error, store_error: :error }.freeze
- SUMMARY_MAP =
{ observation: "observation recorded", primary_success: "primary succeeded", candidate_success: "candidate succeeded", divergence: "outputs diverged from primary", acceptance_failure: "acceptance policy failed", primary_error: "primary raised an error", candidate_error: "candidate raised an error", store_error: "store adapter raised an error" }.freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
- #call(*args, **kwargs) ⇒ Object
-
#initialize(config:) ⇒ Runner
constructor
A new instance of Runner.
Constructor Details
#initialize(config:) ⇒ Runner
Returns a new instance of Runner.
40 41 42 43 |
# File 'lib/igniter/embed/contractable/runner.rb', line 40 def initialize(config:) @config = config @config.validate! end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
38 39 40 |
# File 'lib/igniter/embed/contractable/runner.rb', line 38 def config @config end |
Instance Method Details
#call(*args, **kwargs) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/igniter/embed/contractable/runner.rb', line 45 def call(*args, **kwargs) observation_id = generate_observation_id primary_result = primary_payload(args, kwargs, observation_id) started_at = config.now sampled = config.sampled? dispatch_event(:primary_success, observation_id: observation_id, observation: nil, error: nil, metadata: { inputs: redacted_inputs(args, kwargs) }) if sampled handoff = build_async_handoff(observation_id, args, kwargs) work = -> { observe(observation_id: observation_id, started_at: started_at, primary_result: primary_result, args: args, kwargs: kwargs, sampled: true) } dispatch_async(name: config.name, inputs: redacted_inputs(args, kwargs), metadata: , handoff: handoff, &work) else record_observation(sampled_observation(observation_id: observation_id, started_at: started_at, primary_result: primary_result, args: args, kwargs: kwargs)) end primary_result end |