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