Module: Workarea::CurrentTracking
- Extended by:
- ActiveSupport::Concern
- Included in:
- ApplicationController, CurrentSegments
- Defined in:
- app/controllers/workarea/current_tracking.rb
Instance Method Summary collapse
- #current_metrics ⇒ Object
- #current_referrer ⇒ Object
- #current_visit ⇒ Object
-
#ensure_current_metrics ⇒ Object
This method is mostly for tests, but could surface in an implementation.
- #update_tracking!(email: current_user&.email) ⇒ Object
Instance Method Details
#current_metrics ⇒ Object
17 18 19 |
# File 'app/controllers/workarea/current_tracking.rb', line 17 def current_metrics current_visit.metrics end |
#current_referrer ⇒ Object
21 22 23 |
# File 'app/controllers/workarea/current_tracking.rb', line 21 def current_referrer current_visit.referrer end |
#current_visit ⇒ Object
13 14 15 |
# File 'app/controllers/workarea/current_tracking.rb', line 13 def current_visit request.env['workarea.visit'] end |
#ensure_current_metrics ⇒ Object
This method is mostly for tests, but could surface in an implementation. Since Rails doesn’t set and load a session until needed, an initial request won’t have a session ID for ‘current_visit` to check when loading metrics. This ensures there will be one.
45 46 47 48 49 50 51 |
# File 'app/controllers/workarea/current_tracking.rb', line 45 def ensure_current_metrics return if current_metrics_id.present? || http_caching? # This forces Rails to initialize the session, which provides an ID for metrics session.delete(:foo) self.current_metrics_id = session.id. end |
#update_tracking!(email: current_user&.email) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/controllers/workarea/current_tracking.rb', line 25 def update_tracking!(email: current_user&.email) if email.blank? .delete(:email) elsif email != .signed[:email] unless impersonating? Metrics::User .find_or_initialize_by(id: email) .merge_views!(current_visit&.metrics) end .permanent.signed[:email] = email end request.env['workarea.visit'] = Visit.new(request.env) end |