@@ -18,15 +18,12 @@ def generate_event(event_type, audience, data={}, drip_rate=:immediately)
18
18
activity_feed_keys = channels . map { |channel | Audience . channel_to_key ( channel ) }
19
19
20
20
if drip_rate == :immediately
21
- #Rails.logger.debug("data=#{data.class.name},#{data.inspect}, #{extra_information(data)}, #{data[:user].inspect}, #{drip_rate}")
22
21
channels . each do |channel |
23
22
publish_event ( channel , data )
24
23
end
25
24
else
26
25
activity_feed_keys . each_with_index do |activity_feed_key , index |
27
26
data . merge! ( { channel : channels [ index ] } . with_indifferent_access )
28
- #Rails.logger.debug("data=#{data.class.name},#{data.inspect}, #{extra_information(data)}, #{data[:user].inspect}, #{drip_rate}")
29
- #last_event = REDIS.LINDEX(user.activity_feed_key, 0).collect{|event| Event.new(event)}.first
30
27
score_for_event = Time . now . to_f
31
28
REDIS . zadd ( activity_feed_key , score_for_event . to_f , data )
32
29
count = REDIS . zcard ( activity_feed_key )
@@ -35,13 +32,6 @@ def generate_event(event_type, audience, data={}, drip_rate=:immediately)
35
32
end
36
33
end
37
34
38
- def score_based_on_drip_rate ( activity_feed_key , event_type , drip_rate )
39
- time_difference_requested = drip_rate_to_time ( drip_rate )
40
- last_similar_event_timestamp = last_similar_event_timestamp ( activity_feed_key , event_type )
41
- score_for_event = last_similar_event_timestamp . to_f + time_difference_requested . to_f
42
- score_for_event
43
- end
44
-
45
35
def send_admin_notifications ( event_type , data , queue )
46
36
unless queue . nil?
47
37
if event_type . to_sym == :new_protip
@@ -53,48 +43,10 @@ def send_admin_notifications(event_type, data, queue)
53
43
end
54
44
55
45
def publish_event ( channel , data )
56
- #puts data.inspect
57
46
data . merge! ( timestamp : Time . now . to_i )
58
-
59
- #puts "publish event #{data[:event_type]}"
60
-
61
47
publish ( channel , data . to_json )
62
48
end
63
49
64
- def drip_rate_to_time ( drip_rate )
65
- case drip_rate
66
- when :immediately
67
- Time . now
68
- when :hourly
69
- 1 . hour
70
- when :daily
71
- 1 . day
72
- when :weekly
73
- 1 . week
74
- when :monthly
75
- 1 . month
76
- else
77
- drip_rate
78
- end
79
- end
80
-
81
- def last_similar_event_timestamp ( activity_feed_key , event_type )
82
- # we basically look at every event in the future (if any) and find the last event of same event type so we can space it from that. Otherwise, we
83
- # just space it from now. it is not perfect because we miss the corner case that similar event was in the past but limits the searches.
84
-
85
- i = 1
86
- Hash [ *REDIS . zrangebyscore ( activity_feed_key , Time . now . to_f , "inf" , withscores : true ) ] . sort_by { |k , v | v } . reverse . each do |activity , score |
87
-
88
- Rails . logger . warn ( "[EVAL:#{ i } ] Event#last_similar_event_timestamp(activity_feed_key = #{ activity_feed_key . inspect } , event_type = #{ event_type . inspect } ) set to eval activity = #{ activity . inspect } " )
89
- i += 1
90
-
91
- if eval ( activity ) [ :event_type ] == event_type
92
- return score
93
- end
94
- end
95
- REDIS . zrange ( activity_feed_key , 0 , 0 , withscores : true ) [ 1 ] || Time . now . to_i
96
- end
97
-
98
50
def user_activity ( user , from , to , limit , publish = false )
99
51
100
52
activity_feed_keys = user . nil? ? Audience . to_key ( Audience . all ) . to_a : user . subscribed_channels . map { |channel | Audience . channel_to_key ( channel ) }
@@ -104,15 +56,13 @@ def user_activity(user, from, to, limit, publish=false)
104
56
activities = [ ]
105
57
106
58
activity_feed_keys . each do |activity_feed_key |
107
- #puts "activity_feed_key=#{activity_feed_key}, #{from}, #{to}, #{count}, #{limit}, #{publish}"
108
59
i = 1
109
60
REDIS . zrangebyscore ( activity_feed_key , from , to ) . each do |activity |
110
61
111
62
Rails . logger . warn ( "[EVAL:#{ i } ] Event#user_activity(user = #{ user . inspect } , from = #{ from . inspect } , limit = #{ limit . inspect } , publish = #{ publish . inspect } ) set to eval activity = #{ activity . inspect } " )
112
63
i += 1
113
64
114
65
break if count == limit
115
- #puts "PUBLISHING #{activity}"
116
66
data = eval ( activity ) . with_indifferent_access
117
67
channel = data [ :channel ]
118
68
data . delete ( :channel )
@@ -122,7 +72,6 @@ def user_activity(user, from, to, limit, publish=false)
122
72
else
123
73
activities << data . merge ( { timestamp : ( data [ :event_id ] || Time . now . to_i ) } )
124
74
end
125
- #REDIS.zrem(activity_feed_key, activity)
126
75
count += 1
127
76
end
128
77
end
0 commit comments