Class: TrailGuide::Unity

Inherits:
Object
  • Object
show all
Defined in:
lib/trail_guide/unity.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user_id: nil, visitor_id: nil) ⇒ Unity

Returns a new instance of Unity.



21
22
23
24
# File 'lib/trail_guide/unity.rb', line 21

def initialize(user_id: nil, visitor_id: nil)
  @user_id = user_id.to_s if user_id.present?
  @visitor_id = visitor_id.to_s if visitor_id.present?
end

Instance Attribute Details

#user_idObject

Returns the value of attribute user_id.



18
19
20
# File 'lib/trail_guide/unity.rb', line 18

def user_id
  @user_id
end

#visitor_idObject

Returns the value of attribute visitor_id.



18
19
20
# File 'lib/trail_guide/unity.rb', line 18

def visitor_id
  @visitor_id
end

Class Method Details

.clear!Object



12
13
14
15
# File 'lib/trail_guide/unity.rb', line 12

def clear!
  keys = TrailGuide.redis.keys("#{configuration.namespace}:*")
  TrailGuide.redis.del *keys unless keys.empty?
end

.configurationObject



4
5
6
# File 'lib/trail_guide/unity.rb', line 4

def configuration
  @configuration ||= Canfig::Config.new(namespace: :unity)
end

.configure(*args, &block) ⇒ Object



8
9
10
# File 'lib/trail_guide/unity.rb', line 8

def configure(*args, &block)
  configuration.configure(*args, &block)
end

Instance Method Details

#delete!Object



74
75
76
77
78
79
80
81
# File 'lib/trail_guide/unity.rb', line 74

def delete!
  keys = []
  keys << stored_user_key if stored_user_id.present?
  keys << stored_visitor_key if stored_visitor_id.present?
  keys << user_key if user_id.present?
  keys << visitor_key if visitor_id.present?
  TrailGuide.redis.del(*keys) unless keys.empty?
end

#save!Object



63
64
65
66
67
68
69
70
71
72
# File 'lib/trail_guide/unity.rb', line 63

def save!
  return false unless valid?
  TrailGuide.redis.set(user_key, visitor_id)
  TrailGuide.redis.set(visitor_key, user_id)
  if TrailGuide.configuration.unity_ttl
    TrailGuide.redis.expire(user_key, TrailGuide.configuration.unity_ttl)
    TrailGuide.redis.expire(visitor_key, TrailGuide.configuration.unity_ttl)
  end
  true
end

#stored?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/trail_guide/unity.rb', line 46

def stored?
  stored_visitor_id.present? && stored_user_id.present?
end

#stored_user_idObject



34
35
36
# File 'lib/trail_guide/unity.rb', line 34

def stored_user_id
  TrailGuide.redis.get(visitor_key) if visitor_id.present?
end

#stored_visitor_idObject



38
39
40
# File 'lib/trail_guide/unity.rb', line 38

def stored_visitor_id
  TrailGuide.redis.get(user_key) if user_id.present?
end

#sync!Object



56
57
58
59
60
61
# File 'lib/trail_guide/unity.rb', line 56

def sync!
  @user_id ||= stored_user_id
  @visitor_id ||= stored_visitor_id
  delete!
  save!
end

#synced?Boolean

Returns:

  • (Boolean)


50
51
52
53
54
# File 'lib/trail_guide/unity.rb', line 50

def synced?
  valid? && stored? && 
    stored_visitor_id == visitor_id &&
    stored_user_id == user_id
end

#valid?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/trail_guide/unity.rb', line 42

def valid?
  visitor_id.present? && user_id.present?
end