Module: Desiru::Core::Traceable

Included in:
Module
Defined in:
lib/desiru/core/traceable.rb

Instance Method Summary collapse

Instance Method Details

#call(inputs = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/desiru/core/traceable.rb', line 6

def call(inputs = {})
  return super unless trace_enabled?

  # Handle anonymous classes
  class_name = self.class.name || "AnonymousModule"
  module_name = class_name.split('::').last

  Core.trace_context.start_trace(
    module_name: module_name,
    signature: signature,
    inputs: inputs
  )

  begin
    result = super

    outputs = if result.is_a?(ModuleResult)
                result.outputs
              else
                result
              end

     = if result.is_a?(ModuleResult)
                 result.
               else
                 {}
               end

    Core.trace_context.end_trace(
      outputs: outputs,
      metadata: 
    )

    result
  rescue StandardError => e
    Core.trace_context.record_error(e)
    raise
  end
end

#disable_trace!Object



56
57
58
# File 'lib/desiru/core/traceable.rb', line 56

def disable_trace!
  @trace_enabled = false
end

#enable_trace!Object



52
53
54
# File 'lib/desiru/core/traceable.rb', line 52

def enable_trace!
  @trace_enabled = true
end

#trace_enabled?Boolean

Returns:



46
47
48
49
50
# File 'lib/desiru/core/traceable.rb', line 46

def trace_enabled?
  return true unless defined?(@trace_enabled)

  @trace_enabled
end