tekeya 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
data/lib/tekeya/entity.rb
CHANGED
@@ -336,7 +336,7 @@ module Tekeya
|
|
336
336
|
# Check if the cache is not empty
|
337
337
|
if recent_activities_count > 0
|
338
338
|
# Retrieve the aggregate keys from redis
|
339
|
-
acts_keys = ::Tekeya.redis.
|
339
|
+
acts_keys = ::Tekeya.redis.zrevrange(fkey, 0, -1)
|
340
340
|
# Retrieve the aggregates
|
341
341
|
acts_keys.each do |act_key|
|
342
342
|
acts << ::Tekeya::Feed::Activity::Item.from_redis(act_key, self)
|
data/lib/tekeya/feed/activity.rb
CHANGED
@@ -61,7 +61,16 @@ module Tekeya
|
|
61
61
|
def write_activity_in_redis
|
62
62
|
akey = activity_key
|
63
63
|
tscore = score
|
64
|
-
|
64
|
+
attachments_json = self.attachments.map{ |att| att.to_json(root: false, only: [:attachable_id, :attachable_type]) }
|
65
|
+
|
66
|
+
# write the activity to the aggregate set and the owner's feed
|
67
|
+
::Tekeya.redis.multi do
|
68
|
+
write_aggregate
|
69
|
+
::Tekeya::Feed::Activity::Resque::ActivityFanout.write_to_feed(self.entity.profile_feed_key, tscore, akey)
|
70
|
+
::Tekeya::Feed::Activity::Resque::ActivityFanout.write_to_feed(self.entity.feed_key, tscore, akey)
|
71
|
+
end
|
72
|
+
|
73
|
+
::Resque.enqueue(::Tekeya::Feed::Activity::Resque::ActivityFanout, self.entity_id, self.entity_type, akey, tscore)
|
65
74
|
end
|
66
75
|
|
67
76
|
# @private
|
@@ -96,6 +105,17 @@ module Tekeya
|
|
96
105
|
# floors the timestamp to the nearest 15 minute
|
97
106
|
return Time.at((stamp.to_f / 15.minutes).floor * 15.minutes)
|
98
107
|
end
|
108
|
+
|
109
|
+
# Writes the activity and its' attachments to the aggregate set
|
110
|
+
#
|
111
|
+
# @param [String] activity_key the key of the activity to be added
|
112
|
+
# @param [Array] attachments an array of attachments associated with the activity
|
113
|
+
def write_aggregate
|
114
|
+
# save the aggregate set
|
115
|
+
self.attachments.map{ |att| att.to_json(root: false, only: [:attachable_id, :attachable_type]) }.each do |attachment|
|
116
|
+
::Tekeya.redis.sadd(activity_key, attachment)
|
117
|
+
end
|
118
|
+
end
|
99
119
|
end
|
100
120
|
end
|
101
121
|
end
|
@@ -9,7 +9,6 @@ module Tekeya
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module ClassMethods
|
12
|
-
private
|
13
12
|
# Writes the activity reference to the feed with the supplied key
|
14
13
|
#
|
15
14
|
# @param [String] feed_key the key of the feed where the activity will be referenced
|
@@ -23,6 +22,7 @@ module Tekeya
|
|
23
22
|
::Tekeya.redis.incr(activity_counter_key)
|
24
23
|
end
|
25
24
|
|
25
|
+
private
|
26
26
|
# Trims the feed according to the MAXTIMESTAMP set and returns the removed keys (for garbage collection)
|
27
27
|
#
|
28
28
|
# @param [String] feed_key a string containing the key of the feed to be trimed
|
@@ -9,22 +9,15 @@ module Tekeya
|
|
9
9
|
@queue = :activity_queue
|
10
10
|
|
11
11
|
# @private
|
12
|
-
def self.perform(entity_id, entity_type, activity_key, score
|
12
|
+
def self.perform(entity_id, entity_type, activity_key, score)
|
13
13
|
# get the entity class
|
14
14
|
entity_type = entity_type.safe_constantize
|
15
15
|
entity = entity_type.where(entity_type.entity_primary_key.to_sym => entity_id).first
|
16
16
|
# we only need the feed keys of the trackers
|
17
17
|
entity_trackers_feeds = entity.trackers.map(&:feed_key)
|
18
|
-
entity_trackers_feeds << entity.feed_key
|
19
18
|
# keep track of the keys we delete in the trim operation for garbage collection
|
20
19
|
removed_keys = []
|
21
20
|
|
22
|
-
# write the activity to the aggregate set and the owner's feed
|
23
|
-
::Tekeya.redis.multi do
|
24
|
-
write_aggregate(activity_key, attachments)
|
25
|
-
write_to_feed(entity.profile_feed_key, score, activity_key)
|
26
|
-
end
|
27
|
-
|
28
21
|
# trim the profile feed
|
29
22
|
removed_keys += trim_feed(entity.profile_feed_key)
|
30
23
|
|
@@ -42,19 +35,6 @@ module Tekeya
|
|
42
35
|
# cleanup the garbage
|
43
36
|
collect_garbage removed_keys
|
44
37
|
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
# Writes the activity and its' attachments to the aggregate set
|
49
|
-
#
|
50
|
-
# @param [String] activity_key the key of the activity to be added
|
51
|
-
# @param [Array] attachments an array of attachments associated with the activity
|
52
|
-
def self.write_aggregate(activity_key, attachments)
|
53
|
-
# save the aggregate set
|
54
|
-
attachments.each do |attachment|
|
55
|
-
::Tekeya.redis.sadd(activity_key, attachment)
|
56
|
-
end
|
57
|
-
end
|
58
38
|
end
|
59
39
|
end
|
60
40
|
end
|
data/lib/tekeya/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tekeya
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-11-
|
13
|
+
date: 2012-11-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redis
|
17
|
-
requirement: &
|
17
|
+
requirement: &70167657241820 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70167657241820
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rebat
|
28
|
-
requirement: &
|
28
|
+
requirement: &70167657235060 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.1.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70167657235060
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: resque
|
39
|
-
requirement: &
|
39
|
+
requirement: &70167657232000 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.23.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70167657232000
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: railties
|
50
|
-
requirement: &
|
50
|
+
requirement: &70167657225340 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '3.1'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70167657225340
|
59
59
|
description: a social engine for Rails applications based on Redis and RebatDB
|
60
60
|
email:
|
61
61
|
- omar.mekky@mashsolvents.com
|