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 Method Summary collapse

Class Method Details

.clear!Object



23
24
25
# File 'lib/determinator/tracking.rb', line 23

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

.clear_hooks!Object



56
57
58
59
# File 'lib/determinator/tracking.rb', line 56

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

.contextObject



49
50
51
52
53
54
# File 'lib/determinator/tracking.rb', line 49

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

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



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

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

.get_context(&block) ⇒ Object



45
46
47
# File 'lib/determinator/tracking.rb', line 45

def get_context(&block)
  @get_context = block
end

.instanceObject



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

def instance
  Thread.current[:determinator_tracker]
end

.on_request(&block) ⇒ Object



36
37
38
# File 'lib/determinator/tracking.rb', line 36

def on_request(&block)
  @on_request = block
end

.report(request) ⇒ Object



40
41
42
43
# File 'lib/determinator/tracking.rb', line 40

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

.start!(type) ⇒ Object



11
12
13
# File 'lib/determinator/tracking.rb', line 11

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

.started?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/determinator/tracking.rb', line 27

def started?
  !!instance
end

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



31
32
33
34
# File 'lib/determinator/tracking.rb', line 31

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