Class: Julewire::Rails::RequestLifecycle

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of RequestLifecycle.



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

def initialize(configuration:, env:, request:, taggers:)
  @configuration = configuration
  @env = env
  @request = request
  @taggers = taggers
end

Instance Method Details

#attach_body_finalizer(response) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/julewire/rails/request_lifecycle.rb', line 29

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



42
43
44
# File 'lib/julewire/rails/request_lifecycle.rb', line 42

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

#finish_unattachedObject



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

def finish_unattached
  return if @completion_attached

  finish_unattached_request
  finish_request_thread_logging
end

#startObject



13
14
15
16
# File 'lib/julewire/rails/request_lifecycle.rb', line 13

def start
  @tag_count = push_tags
  @instrumenter_handle = start_request_instrumentation
end

#start_execution!(neutral:) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/julewire/rails/request_lifecycle.rb', line 18

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