Module: TrackRelay::JobTracking
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/track_relay/job_tracking.rb
Overview
Job-side tracking helper.
Host applications include this concern in ApplicationJob (or any
job) to expose a track(name, **params) instance method that
delegates to track.
Unlike ControllerTracking, this concern is intentionally minimal
— it does NOT auto-populate Current. The reason is the Rails
Executor: ActiveJob wraps every perform with the Executor, which
calls ActiveSupport::CurrentAttributes.clear_all BEFORE the job
runs. So any Current.user set in the request that enqueued the
job is gone by the time perform runs — even under the inline /
test queue adapter. Auto-populating from constructor args would be
wrong: the args are serialized through the queue, but the in-memory
context (visit, request, etc.) is not.
Job authors are responsible for restoring whatever context they
care about. The documented pattern is Current.set(user: u, ...) { track :foo, ... }. The block form binds attributes for the
duration of the block, then unwinds — perfect for a single track
call inside perform.
Instance Method Summary collapse
-
#track(name, **params) ⇒ void
Delegate to track.
Instance Method Details
#track(name, **params) ⇒ void
This method returns an undefined value.
Delegate to TrackRelay.track. Sugar for in-job call sites.
46 47 48 |
# File 'lib/track_relay/job_tracking.rb', line 46 def track(name, **params) TrackRelay.track(name, **params) end |