It's possible to use the `Ahoy::Tracker::UUID_NAMESPACE` since Ahoy 2.1.0 [1]. [1] https://github.com/ankane/ahoy/commit/44f7956bad
37 lines
831 B
Ruby
37 lines
831 B
Ruby
Ahoy.api = true
|
|
Ahoy.server_side_visits = :when_needed
|
|
|
|
# Most code comes from:
|
|
# https://github.com/ankane/ahoy/blob/3661b7f9a/docs/Ahoy-2-Upgrade.md
|
|
class Ahoy::Store < Ahoy::DatabaseStore
|
|
def track_visit(data)
|
|
data[:id] = ensure_uuid(data.delete(:visit_token))
|
|
data[:visitor_id] = ensure_uuid(data.delete(:visitor_token))
|
|
super(data)
|
|
end
|
|
|
|
def track_event(data)
|
|
data[:id] = ensure_uuid(data.delete(:event_id))
|
|
data[:ip] = request.ip
|
|
super(data)
|
|
end
|
|
|
|
def visit
|
|
@visit ||= visit_model.find_by(id: ensure_uuid(ahoy.visit_token)) if ahoy.visit_token
|
|
end
|
|
|
|
def visit_model
|
|
Visit
|
|
end
|
|
|
|
def ensure_uuid(id)
|
|
UUIDTools::UUID.parse(id).to_s
|
|
rescue
|
|
UUIDTools::UUID.sha1_create(UUIDTools::UUID.parse(Ahoy::Tracker::UUID_NAMESPACE), id).to_s
|
|
end
|
|
|
|
def exclude?
|
|
false
|
|
end
|
|
end
|