Create visit for visitable if needed
Andrew
committed Feb 27, 2018
commit 13c9b3c99da9b4f462d0d8321bfca7caece1f6d5
Showing 5
changed files with
21 additions
and 4 deletions
CHANGELOG.md
+5
-0
| @@ | @@ -1,3 +1,8 @@ |
| + | ## 2.0.1 [unreleased] |
| + | |
| + | - Create visit for `visitable` if needed |
| + | - Better handling of visit duration and expiration in JavaScript |
| + | |
| ## 2.0.0 | |
| - Removed dependency on jQuery | |
ahoy/base_store.rb b/lib/ahoy/base_store.rb
+4
-0
| @@ | @@ -39,6 +39,10 @@ module Ahoy |
| Ahoy.token_generator.call | |
| end | |
| + | def visit_or_create |
| + | visit |
| + | end |
| + | |
| protected | |
| def bot? | |
ahoy/database_store.rb b/lib/ahoy/database_store.rb
+7
-3
| @@ | @@ -8,9 +8,7 @@ module Ahoy |
| end | |
| def track_event(data) | |
| - | # if we don't have a visit, let's try to create one first |
| - | ahoy.track_visit unless visit |
| - | |
| + | visit = visit_or_create |
| if visit | |
| event = event_model.new(slice_data(event_model, data)) | |
| event.visit = visit | |
| @@ | @@ -51,6 +49,12 @@ module Ahoy |
| @visit ||= visit_model.where(visit_token: ahoy.visit_token).first if ahoy.visit_token | |
| end | |
| + | # if we don't have a visit, let's try to create one first |
| + | def visit_or_create |
| + | ahoy.track_visit unless visit |
| + | visit |
| + | end |
| + | |
| protected | |
| def visit_model | |
ahoy/model.rb b/lib/ahoy/model.rb
+1
-1
| @@ | @@ -7,7 +7,7 @@ module Ahoy |
| end | |
| class_eval %{ | |
| def set_ahoy_visit | |
| - | self.#{name} ||= RequestStore.store[:ahoy].try(:visit) |
| + | self.#{name} ||= RequestStore.store[:ahoy].try(:visit_or_create) |
| end | |
| } | |
| end | |
ahoy/tracker.rb b/lib/ahoy/tracker.rb
+4
-0
| @@ | @@ -93,6 +93,10 @@ module Ahoy |
| @visit ||= @store.visit | |
| end | |
| + | def visit_or_create |
| + | @visit ||= @store.visit_or_create |
| + | end |
| + | |
| def new_visit? | |
| !existing_visit_token | |
| end | |