Class: Julewire::Rails::RequestLifecycle

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/rails/request_lifecycle.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration:, env:, request:, taggers:) ⇒ RequestLifecycle

Returns a new instance of RequestLifecycle.



8
9
10
11
12
13
14
15
16
17
# File 'lib/julewire/rails/request_lifecycle.rb', line 8

def initialize(configuration:, env:, request:, taggers:)
  @configuration = configuration
  @env = env
  @request = request
  @taggers = taggers
  @completion_attached = false
  @execution_handle = nil
  @instrumenter_handle = nil
  @tag_count = 0
end

Instance Attribute Details

#execution_handleObject (readonly)

Returns the value of attribute execution_handle.



6
7
8
# File 'lib/julewire/rails/request_lifecycle.rb', line 6

def execution_handle
  @execution_handle
end

Instance Method Details

#attach_body_finalizer(response) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/julewire/rails/request_lifecycle.rb', line 36

def attach_body_finalizer(response)
  finish_request_thread_logging
  @completion_attached = true
  RequestCompletion.new(
    configuration: @configuration,
    execution_handle: @execution_handle,
    instrumenter_handle: @instrumenter_handle,
    env: @env,
    request: @request,
    request_error: @env[RequestMiddleware::REQUEST_ERROR_ENV_KEY]
  ).attach(response)
end

#finish_error(error) ⇒ Object



49
50
51
# File 'lib/julewire/rails/request_lifecycle.rb', line 49

def finish_error(error)
  @execution_handle&.finish(reason: :error, error: error)
end

#finish_unattachedObject



53
54
55
56
57
58
# File 'lib/julewire/rails/request_lifecycle.rb', line 53

def finish_unattached
  return if @completion_attached

  finish_unattached_request
  finish_request_thread_logging
end

#startObject



19
20
21
22
23
# File 'lib/julewire/rails/request_lifecycle.rb', line 19

def start
  @tag_count = push_tags
  @instrumenter_handle = start_request_instrumentation
  self
end

#start_execution!(neutral:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/julewire/rails/request_lifecycle.rb', line 25

def start_execution!(neutral:)
  @execution_handle = Julewire.start_execution(
    type: :request,
    id: RequestAttributes.request_id(@request),
    neutral: neutral,
    emit_summary: @configuration.request_summary?,
    summary_event: @configuration.summary_event,
    summary_source: @configuration.source
  )
end