Module: Trailblazer::Activity::TaskWrap::Trace

Defined in:
lib/trailblazer/activity/task_wrap/trace.rb

Overview

TaskWrap tasks for tracing.

Class Method Summary collapse

Class Method Details

.capture_args(wrap_config, original_args, **circuit_options) ⇒ Object

taskWrap step to capture incoming arguments of a step. def self.capture_args(direction, options, flow_options, wrap_config, original_flow_options)



9
10
11
12
13
14
# File 'lib/trailblazer/activity/task_wrap/trace.rb', line 9

def capture_args((wrap_config, original_args), **circuit_options)

  original_args = capture_for(wrap_config[:task], *original_args)

  return Trailblazer::Activity::Right, [wrap_config, original_args], circuit_options
end

.capture_for(task, ctx, flow, activity:, **circuit_options) ⇒ Object

It’s important to understand that :stack is mutated by design. This is needed so in case of exceptions we still have a “global” trace - unfortunately Ruby doesn’t allow us a better way.



33
34
35
36
37
38
39
40
41
# File 'lib/trailblazer/activity/task_wrap/trace.rb', line 33

def capture_for(task, (ctx, flow), activity:, **circuit_options)
  flow[:stack].indent!

  flow[:stack] << Trailblazer::Activity::Trace::Entity.new(
    task, activity, :args, nil, {}
  )

  return [ctx, flow], circuit_options.merge(activity: activity)
end

.capture_return(wrap_config, original_args, **circuit_options) ⇒ Object

taskWrap step to capture outgoing arguments from a step.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/trailblazer/activity/task_wrap/trace.rb', line 17

def capture_return((wrap_config, original_args), **circuit_options)
  (original_options, original_flow_options, _) = original_args[0]

  original_flow_options[:stack] << Trailblazer::Activity::Trace::Entity.new(
    wrap_config[:task], {}, :return, wrap_config[:return_signal]
  )

  original_flow_options[:stack].unindent!


  return Trailblazer::Activity::Right, [wrap_config, original_args], circuit_options
end