activity_feed 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.markdown +10 -0
- data/README.markdown +13 -1
- data/activity_feed.gemspec +4 -4
- data/lib/activity_feed/feed.rb +9 -0
- data/lib/activity_feed/version.rb +1 -1
- data/spec/activity_feed/feed_spec.rb +115 -52
- data/spec/version_spec.rb +1 -1
- metadata +6 -5
data/CHANGELOG.markdown
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 3.0.1 (2013-07-17)
|
4
|
+
|
5
|
+
More useful aliases:
|
6
|
+
|
7
|
+
* `ActivityFeed.for` as an alias for `ActivityFeed.feed`
|
8
|
+
* `ActivityFeed.between` as an alias for `ActivityFeed.feed_between_timestamps`
|
9
|
+
* `ActivityFeed.trim` as an alias for `ActivityFeed.trim_feed`
|
10
|
+
* `ActivityFeed.expire_in` and `ActivityFeed.expire_feed_in` as aliases for `ActivityFeed.expire_feed`
|
11
|
+
* `ActivityFeed.expire_at` as an alias for `ActivityFeed.expire_feed_at`
|
12
|
+
|
3
13
|
## 3.0.0 (2013-07-12)
|
4
14
|
|
5
15
|
* Allow for bulk-loading of feed items. The `ActivityFeed.item_loader`
|
data/README.markdown
CHANGED
@@ -286,7 +286,6 @@ feeds in which that activity feed item may have been aggregated.
|
|
286
286
|
|
287
287
|
ActivityFeed.update_item(user_id, item_id, timestamp, aggregate = ActivityFeed.aggregate)
|
288
288
|
ActivityFeed.add_item(user_id, item_id, timestamp, aggregate = ActivityFeed.aggregate)
|
289
|
-
# add_item is an alias for update_item
|
290
289
|
|
291
290
|
ActivityFeed.aggregate_item(user_id, item_id, timestamp)
|
292
291
|
ActivityFeed.remove_item(user_id, item_id)
|
@@ -295,16 +294,29 @@ ActivityFeed.check_item?(user_id, item_id, aggregate = ActivityFeed.aggregate)
|
|
295
294
|
# Feed-related
|
296
295
|
|
297
296
|
ActivityFeed.feed(user_id, page, aggregate = ActivityFeed.aggregate)
|
297
|
+
ActivityFeed.for(user_id, page, aggregate = ActivityFeed.aggregate)
|
298
|
+
|
298
299
|
ActivityFeed.full_feed(user_id, aggregate = ActivityFeed.aggregate)
|
300
|
+
|
299
301
|
ActivityFeed.feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
302
|
+
ActivityFeed.between(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
303
|
+
|
300
304
|
ActivityFeed.total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size)
|
301
305
|
ActivityFeed.total_pages(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size)
|
306
|
+
|
302
307
|
ActivityFeed.total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate)
|
303
308
|
ActivityFeed.total_items(user_id, aggregate = ActivityFeed.aggregate)
|
309
|
+
|
304
310
|
ActivityFeed.trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
311
|
+
ActivityFeed.trim(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
312
|
+
|
305
313
|
ActivityFeed.expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
306
314
|
ActivityFeed.expire_feed_in(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
315
|
+
ActivityFeed.expire_in(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
316
|
+
|
307
317
|
ActivityFeed.expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate)
|
318
|
+
ActivityFeed.expire_at(user_id, timestamp, aggregate = ActivityFeed.aggregate)
|
319
|
+
|
308
320
|
ActivityFeed.remove_feeds(user_id)
|
309
321
|
```
|
310
322
|
|
data/activity_feed.gemspec
CHANGED
@@ -10,15 +10,15 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = 'https://github.com/agoragames/activity_feed'
|
11
11
|
s.summary = %q{Activity feeds backed by Redis}
|
12
12
|
s.description = %q{Activity feeds backed by Redis}
|
13
|
+
s.license = 'MIT'
|
13
14
|
|
14
15
|
s.rubyforge_project = 'activity_feed'
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
|
20
20
|
s.require_paths = ['lib']
|
21
|
-
|
21
|
+
|
22
22
|
s.add_development_dependency('rake')
|
23
23
|
s.add_development_dependency('rspec')
|
24
24
|
s.add_development_dependency('activesupport')
|
@@ -29,12 +29,12 @@ Gem::Specification.new do |s|
|
|
29
29
|
|
30
30
|
s.add_development_dependency('activerecord')
|
31
31
|
s.add_development_dependency('sqlite3')
|
32
|
-
|
32
|
+
|
33
33
|
s.add_development_dependency('database_cleaner')
|
34
34
|
|
35
35
|
if '1.8.7'.eql?(RUBY_VERSION)
|
36
36
|
s.add_development_dependency('SystemTimer')
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
s.add_dependency('leaderboard')
|
40
40
|
end
|
data/lib/activity_feed/feed.rb
CHANGED
@@ -16,6 +16,8 @@ module ActivityFeed
|
|
16
16
|
load_feed_items(feed_items)
|
17
17
|
end
|
18
18
|
|
19
|
+
alias_method :for, :feed
|
20
|
+
|
19
21
|
# Retrieve the entire activity feed for a given +user_id+. You can configure
|
20
22
|
# +ActivityFeed.items_loader+ with a Proc to retrieve items from, for example,
|
21
23
|
# your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page
|
@@ -49,6 +51,8 @@ module ActivityFeed
|
|
49
51
|
load_feed_items(feed_items)
|
50
52
|
end
|
51
53
|
|
54
|
+
alias_method :between, :feed_between_timestamps
|
55
|
+
|
52
56
|
# Return the total number of pages in the activity feed.
|
53
57
|
#
|
54
58
|
# @param user_id [String] User ID.
|
@@ -94,6 +98,8 @@ module ActivityFeed
|
|
94
98
|
ActivityFeed.feederboard_for(user_id, aggregate).remove_members_in_score_range(starting_timestamp, ending_timestamp)
|
95
99
|
end
|
96
100
|
|
101
|
+
alias_method :trim, :trim_feed
|
102
|
+
|
97
103
|
# Expire an activity feed after a set number of seconds.
|
98
104
|
#
|
99
105
|
# @param user_id [String] User ID.
|
@@ -103,6 +109,7 @@ module ActivityFeed
|
|
103
109
|
ActivityFeed.redis.expire(ActivityFeed.feed_key(user_id, aggregate), seconds)
|
104
110
|
end
|
105
111
|
|
112
|
+
alias_method :expire_in, :expire_feed
|
106
113
|
alias_method :expire_feed_in, :expire_feed
|
107
114
|
|
108
115
|
# Expire an activity feed at a given timestamp.
|
@@ -114,6 +121,8 @@ module ActivityFeed
|
|
114
121
|
ActivityFeed.redis.expireat(ActivityFeed.feed_key(user_id, aggregate), timestamp)
|
115
122
|
end
|
116
123
|
|
124
|
+
alias_method :expire_at, :expire_feed_at
|
125
|
+
|
117
126
|
private
|
118
127
|
|
119
128
|
# Load feed items from the `ActivityFeed.items_loader` if available,
|
@@ -1,20 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActivityFeed::Feed do
|
4
|
-
describe '#feed' do
|
4
|
+
describe '#feed and #for' do
|
5
5
|
describe 'without aggregation' do
|
6
6
|
it 'should return an activity feed with the items correctly ordered' do
|
7
|
+
feed = ActivityFeed.feed('david', 1)
|
8
|
+
feed.length.should eql(0)
|
9
|
+
|
7
10
|
add_items_to_feed('david')
|
8
11
|
|
9
|
-
feed
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
[:feed, :for].each do |method|
|
13
|
+
feed = ActivityFeed.send(method, 'david', 1)
|
14
|
+
feed.length.should eql(5)
|
15
|
+
feed[0].to_i.should eql(5)
|
16
|
+
feed[4].to_i.should eql(1)
|
17
|
+
end
|
13
18
|
end
|
14
19
|
end
|
15
20
|
|
16
21
|
describe 'with aggregation' do
|
17
22
|
it 'should return an aggregate activity feed with the items correctly ordered' do
|
23
|
+
feed = ActivityFeed.feed('david', 1, true)
|
24
|
+
feed.length.should eql(0)
|
25
|
+
|
18
26
|
add_items_to_feed('david', 5, true)
|
19
27
|
|
20
28
|
feed = ActivityFeed.feed('david', 1, true)
|
@@ -28,6 +36,9 @@ describe ActivityFeed::Feed do
|
|
28
36
|
describe '#full_feed' do
|
29
37
|
describe 'without aggregation' do
|
30
38
|
it 'should return the full activity feed' do
|
39
|
+
feed = ActivityFeed.full_feed('david', false)
|
40
|
+
feed.length.should eql(0)
|
41
|
+
|
31
42
|
add_items_to_feed('david', 30)
|
32
43
|
|
33
44
|
feed = ActivityFeed.full_feed('david', false)
|
@@ -39,6 +50,9 @@ describe ActivityFeed::Feed do
|
|
39
50
|
|
40
51
|
describe 'with aggregation' do
|
41
52
|
it 'should return the full activity feed' do
|
53
|
+
feed = ActivityFeed.full_feed('david', true)
|
54
|
+
feed.length.should eql(0)
|
55
|
+
|
42
56
|
add_items_to_feed('david', 30, true)
|
43
57
|
|
44
58
|
feed = ActivityFeed.full_feed('david', true)
|
@@ -49,9 +63,12 @@ describe ActivityFeed::Feed do
|
|
49
63
|
end
|
50
64
|
end
|
51
65
|
|
52
|
-
describe '#feed_between_timestamps' do
|
66
|
+
describe '#feed_between_timestamps and #between' do
|
53
67
|
describe 'without aggregation' do
|
54
68
|
it 'should return activity feed items between the starting and ending timestamps' do
|
69
|
+
feed = ActivityFeed.feed_between_timestamps('david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, false)
|
70
|
+
feed.length.should eql(0)
|
71
|
+
|
55
72
|
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
56
73
|
ActivityFeed.update_item('david', 1, Time.now.to_i)
|
57
74
|
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
@@ -64,15 +81,20 @@ describe ActivityFeed::Feed do
|
|
64
81
|
ActivityFeed.update_item('david', 5, Time.now.to_i)
|
65
82
|
Timecop.return
|
66
83
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
84
|
+
[:feed_between_timestamps, :between].each do |method|
|
85
|
+
feed = ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, false)
|
86
|
+
feed.length.should eql(2)
|
87
|
+
feed[0].to_i.should eql(4)
|
88
|
+
feed[1].to_i.should eql(3)
|
89
|
+
end
|
71
90
|
end
|
72
91
|
end
|
73
92
|
|
74
93
|
describe 'with aggregation' do
|
75
94
|
it 'should return activity feed items between the starting and ending timestamps' do
|
95
|
+
feed = ActivityFeed.feed_between_timestamps('david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
|
96
|
+
feed.length.should eql(0)
|
97
|
+
|
76
98
|
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
77
99
|
ActivityFeed.update_item('david', 1, Time.now.to_i, true)
|
78
100
|
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
@@ -85,10 +107,12 @@ describe ActivityFeed::Feed do
|
|
85
107
|
ActivityFeed.update_item('david', 5, Time.now.to_i, true)
|
86
108
|
Timecop.return
|
87
109
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
110
|
+
[:feed_between_timestamps, :between].each do |method|
|
111
|
+
feed = ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
|
112
|
+
feed.length.should eql(2)
|
113
|
+
feed[0].to_i.should eql(4)
|
114
|
+
feed[1].to_i.should eql(3)
|
115
|
+
end
|
92
116
|
end
|
93
117
|
end
|
94
118
|
end
|
@@ -96,6 +120,9 @@ describe ActivityFeed::Feed do
|
|
96
120
|
describe '#total_pages_in_feed and #total_pages' do
|
97
121
|
describe 'without aggregation' do
|
98
122
|
it 'should return the correct number of pages in the activity feed' do
|
123
|
+
ActivityFeed.total_pages_in_feed('david').should eql(0)
|
124
|
+
ActivityFeed.total_pages('david').should eql(0)
|
125
|
+
|
99
126
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
100
127
|
|
101
128
|
ActivityFeed.total_pages_in_feed('david').should eql(2)
|
@@ -105,6 +132,9 @@ describe ActivityFeed::Feed do
|
|
105
132
|
|
106
133
|
describe 'with aggregation' do
|
107
134
|
it 'should return the correct number of pages in the aggregate activity feed' do
|
135
|
+
ActivityFeed.total_pages_in_feed('david', true).should eql(0)
|
136
|
+
ActivityFeed.total_pages('david', true).should eql(0)
|
137
|
+
|
108
138
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
109
139
|
|
110
140
|
ActivityFeed.total_pages_in_feed('david', true).should eql(2)
|
@@ -114,6 +144,9 @@ describe ActivityFeed::Feed do
|
|
114
144
|
|
115
145
|
describe 'changing page_size parameter' do
|
116
146
|
it 'should return the correct number of pages in the activity feed' do
|
147
|
+
ActivityFeed.total_pages_in_feed('david', false, 4).should eql(0)
|
148
|
+
ActivityFeed.total_pages('david', false, 4).should eql(0)
|
149
|
+
|
117
150
|
add_items_to_feed('david', 25)
|
118
151
|
|
119
152
|
ActivityFeed.total_pages_in_feed('david', false, 4).should eql(7)
|
@@ -122,7 +155,7 @@ describe ActivityFeed::Feed do
|
|
122
155
|
end
|
123
156
|
end
|
124
157
|
|
125
|
-
describe '#remove_feeds' do
|
158
|
+
describe '#remove_feeds and #remove' do
|
126
159
|
it 'should remove the activity feeds for a given user ID' do
|
127
160
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
128
161
|
|
@@ -139,6 +172,9 @@ describe ActivityFeed::Feed do
|
|
139
172
|
describe '#total_items_in_feed and #total_items' do
|
140
173
|
describe 'without aggregation' do
|
141
174
|
it 'should return the correct number of items in the activity feed' do
|
175
|
+
ActivityFeed.total_items_in_feed('david').should eql(0)
|
176
|
+
ActivityFeed.total_items('david').should eql(0)
|
177
|
+
|
142
178
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
143
179
|
|
144
180
|
ActivityFeed.total_items_in_feed('david').should eql(Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
@@ -148,6 +184,9 @@ describe ActivityFeed::Feed do
|
|
148
184
|
|
149
185
|
describe 'with aggregation' do
|
150
186
|
it 'should return the correct number of items in the aggregate activity feed' do
|
187
|
+
ActivityFeed.total_items_in_feed('david', true).should eql(0)
|
188
|
+
ActivityFeed.total_items('david', true).should eql(0)
|
189
|
+
|
151
190
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
152
191
|
|
153
192
|
ActivityFeed.total_items_in_feed('david', true).should eql(Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
@@ -159,45 +198,49 @@ describe ActivityFeed::Feed do
|
|
159
198
|
describe '#trim_feed' do
|
160
199
|
describe 'without aggregation' do
|
161
200
|
it 'should trim activity feed items between the starting and ending timestamps' do
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
201
|
+
[:trim_feed, :trim].each do |method|
|
202
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
203
|
+
ActivityFeed.update_item('david', 1, Time.now.to_i)
|
204
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
205
|
+
ActivityFeed.update_item('david', 2, Time.now.to_i)
|
206
|
+
Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
|
207
|
+
ActivityFeed.update_item('david', 3, Time.now.to_i)
|
208
|
+
Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
|
209
|
+
ActivityFeed.update_item('david', 4, Time.now.to_i)
|
210
|
+
Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
|
211
|
+
ActivityFeed.update_item('david', 5, Time.now.to_i)
|
212
|
+
Timecop.return
|
213
|
+
|
214
|
+
ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i)
|
215
|
+
feed = ActivityFeed.feed('david', 1)
|
216
|
+
feed.length.should eql(2)
|
217
|
+
feed[0].to_i.should eql(5)
|
218
|
+
feed[1].to_i.should eql(1)
|
219
|
+
end
|
179
220
|
end
|
180
221
|
end
|
181
222
|
|
182
223
|
describe 'with aggregation' do
|
183
224
|
it 'should trim activity feed items between the starting and ending timestamps' do
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
225
|
+
[:trim_feed, :trim].each do |method|
|
226
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
227
|
+
ActivityFeed.update_item('david', 1, Time.now.to_i, true)
|
228
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
229
|
+
ActivityFeed.update_item('david', 2, Time.now.to_i, true)
|
230
|
+
Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
|
231
|
+
ActivityFeed.update_item('david', 3, Time.now.to_i, true)
|
232
|
+
Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
|
233
|
+
ActivityFeed.update_item('david', 4, Time.now.to_i, true)
|
234
|
+
Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
|
235
|
+
ActivityFeed.update_item('david', 5, Time.now.to_i, true)
|
236
|
+
Timecop.return
|
237
|
+
|
238
|
+
ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
|
239
|
+
feed = ActivityFeed.feed('david', 1, true)
|
240
|
+
feed.length.should eql(2)
|
241
|
+
feed[0].to_i.should eql(5)
|
242
|
+
feed[1].to_i.should eql(1)
|
243
|
+
end
|
201
244
|
end
|
202
245
|
end
|
203
246
|
end
|
@@ -251,7 +294,7 @@ describe ActivityFeed::Feed do
|
|
251
294
|
end
|
252
295
|
end
|
253
296
|
|
254
|
-
describe '#expire_feed and #expire_feed_in' do
|
297
|
+
describe '#expire_feed, #expire_in and #expire_feed_in' do
|
255
298
|
it 'should set an expiration on an activity feed using #expire_feed' do
|
256
299
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
257
300
|
|
@@ -262,6 +305,16 @@ describe ActivityFeed::Feed do
|
|
262
305
|
end
|
263
306
|
end
|
264
307
|
|
308
|
+
it 'should set an expiration on an activity feed using #expire_in' do
|
309
|
+
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
310
|
+
|
311
|
+
ActivityFeed.expire_in('david', 10)
|
312
|
+
ActivityFeed.redis.ttl(ActivityFeed.feed_key('david')).tap do |ttl|
|
313
|
+
ttl.should be > 1
|
314
|
+
ttl.should be <= 10
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
265
318
|
it 'should set an expiration on an activity feed using #expire_feed_in' do
|
266
319
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
267
320
|
|
@@ -273,8 +326,8 @@ describe ActivityFeed::Feed do
|
|
273
326
|
end
|
274
327
|
end
|
275
328
|
|
276
|
-
describe '#expire_feed_at' do
|
277
|
-
it 'should set an expiration timestamp on an activity feed' do
|
329
|
+
describe '#expire_feed_at and #expire_at' do
|
330
|
+
it 'should set an expiration timestamp on an activity feed using #expire_feed' do
|
278
331
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
279
332
|
|
280
333
|
ActivityFeed.expire_feed_at('david', (Time.now + 10).to_i)
|
@@ -283,5 +336,15 @@ describe ActivityFeed::Feed do
|
|
283
336
|
ttl.should be <= 10
|
284
337
|
end
|
285
338
|
end
|
339
|
+
|
340
|
+
it 'should set an expiration timestamp on an activity feed using #expire_at' do
|
341
|
+
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
342
|
+
|
343
|
+
ActivityFeed.expire_at('david', (Time.now + 10).to_i)
|
344
|
+
ActivityFeed.redis.ttl(ActivityFeed.feed_key('david')).tap do |ttl|
|
345
|
+
ttl.should be > 1
|
346
|
+
ttl.should be <= 10
|
347
|
+
end
|
348
|
+
end
|
286
349
|
end
|
287
350
|
end
|
data/spec/version_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activity_feed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -203,7 +203,8 @@ files:
|
|
203
203
|
- spec/support/mongoid.yml
|
204
204
|
- spec/version_spec.rb
|
205
205
|
homepage: https://github.com/agoragames/activity_feed
|
206
|
-
licenses:
|
206
|
+
licenses:
|
207
|
+
- MIT
|
207
208
|
post_install_message:
|
208
209
|
rdoc_options: []
|
209
210
|
require_paths:
|
@@ -216,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
217
|
version: '0'
|
217
218
|
segments:
|
218
219
|
- 0
|
219
|
-
hash:
|
220
|
+
hash: -3957721059363882018
|
220
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
222
|
none: false
|
222
223
|
requirements:
|
@@ -225,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
226
|
version: '0'
|
226
227
|
segments:
|
227
228
|
- 0
|
228
|
-
hash:
|
229
|
+
hash: -3957721059363882018
|
229
230
|
requirements: []
|
230
231
|
rubyforge_project: activity_feed
|
231
232
|
rubygems_version: 1.8.25
|