Module: Determinator::Tracking

Defined in:
lib/determinator/tracking.rb,
lib/determinator/tracking/context.rb,
lib/determinator/tracking/request.rb,
lib/determinator/tracking/tracker.rb,
lib/determinator/tracking/determination.rb,
lib/determinator/tracking/rack/middleware.rb,
lib/determinator/tracking/sidekiq/middleware.rb

Defined Under Namespace

Modules: Rack, Sidekiq Classes: Context, Determination, Request, Tracker

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.endpoint_env_varsObject

Returns the value of attribute endpoint_env_vars.



7
8
9
# File 'lib/determinator/tracking.rb', line 7

def endpoint_env_vars
  @endpoint_env_vars
end

Class Method Details

.clear!Object



25
26
27
# File 'lib/determinator/tracking.rb', line 25

def clear!
  Thread.current[:determinator_tracker] = nil
end

.clear_hooks!Object



58
59
60
61
# File 'lib/determinator/tracking.rb', line 58

def clear_hooks!
  @on_request = nil
  @get_context = nil
end

.collect_endpoint_info(parts) ⇒ Object



67
68
69
70
71
# File 'lib/determinator/tracking.rb', line 67

def collect_endpoint_info(parts)
  endpoint = Array(Determinator::Tracking.endpoint_env_vars).map{ |v| ENV[v] }
  endpoint += Array(parts)
  endpoint.reject{ |p| p.nil? || p == ''}.join(' ')
end

.contextObject



51
52
53
54
55
56
# File 'lib/determinator/tracking.rb', line 51

def context
  return unless @get_context
  @get_context.call
rescue
  nil
end

.finish!(endpoint:, error:, **attributes) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/determinator/tracking.rb', line 17

def finish!(endpoint:, error:, **attributes)
  return false unless started?
  request = instance.finish!(endpoint: endpoint, error: error, **attributes)
  clear!
  report(request)
  request
end

.get_context(&block) ⇒ Object



47
48
49
# File 'lib/determinator/tracking.rb', line 47

def get_context(&block)
  @get_context = block
end

.instanceObject



9
10
11
# File 'lib/determinator/tracking.rb', line 9

def instance
  Thread.current[:determinator_tracker]
end

.on_request(&block) ⇒ Object



38
39
40
# File 'lib/determinator/tracking.rb', line 38

def on_request(&block)
  @on_request = block
end

.report(request) ⇒ Object



42
43
44
45
# File 'lib/determinator/tracking.rb', line 42

def report(request)
  return unless @on_request
  @on_request.call(request)
end

.start!(type) ⇒ Object



13
14
15
# File 'lib/determinator/tracking.rb', line 13

def start!(type)
  Thread.current[:determinator_tracker] = Tracker.new(type)
end

.started?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/determinator/tracking.rb', line 29

def started?
  !!instance
end

.track(id, guid, feature, determination) ⇒ Object



33
34
35
36
# File 'lib/determinator/tracking.rb', line 33

def track(id, guid, feature, determination)
  return false unless started?
  instance.track(id, guid, feature, determination)
end