Module: ActivityFeed::Feed
- Included in:
- ActivityFeed
- Defined in:
- lib/activity_feed/feed.rb
Instance Method Summary collapse
-
#expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #expire_in, #expire_feed_in)
Expire an activity feed after a set number of seconds.
-
#expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #expire_at)
Expire an activity feed at a given timestamp.
-
#feed(user_id, page, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #for)
Retrieve a page from the activity feed for a given
user_id
. -
#feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #between)
Retrieve a page from the activity feed for a given
user_id
between astarting_timestamp
and anending_timestamp
. -
#full_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object
Retrieve the entire activity feed for a given
user_id
. -
#remove_feeds(user_id) ⇒ Object
Remove the activity feeds for a given
user_id
. -
#total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #total_items)
Return the total number of items in the activity feed.
-
#total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size) ⇒ Object
(also: #total_pages)
Return the total number of pages in the activity feed.
-
#trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #trim)
Trim an activity feed between two timestamps.
-
#trim_to_size(user_id, size, aggregate = ActivityFeed.aggregate) ⇒ Object
(also: #trim_to)
Trim an activity feed to a given size.
Instance Method Details
#expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: expire_in, expire_feed_in
Expire an activity feed after a set number of seconds.
119 120 121 |
# File 'lib/activity_feed/feed.rb', line 119 def expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate) ActivityFeed.redis.expire(ActivityFeed.feed_key(user_id, aggregate), seconds) end |
#expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: expire_at
Expire an activity feed at a given timestamp.
131 132 133 |
# File 'lib/activity_feed/feed.rb', line 131 def expire_feed_at(user_id, , aggregate = ActivityFeed.aggregate) ActivityFeed.redis.expireat(ActivityFeed.feed_key(user_id, aggregate), ) end |
#feed(user_id, page, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: for
Retrieve a page from the activity feed for a given user_id
. You can configure ActivityFeed.items_loader
with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page returned with loaded items rather than item IDs.
13 14 15 16 17 |
# File 'lib/activity_feed/feed.rb', line 13 def feed(user_id, page, aggregate = ActivityFeed.aggregate) feederboard = ActivityFeed.feederboard_for(user_id, aggregate) feed_items = feederboard.leaders(page, :page_size => ActivityFeed.page_size) load_feed_items(feed_items) end |
#feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: between
Retrieve a page from the activity feed for a given user_id
between a starting_timestamp
and an ending_timestamp
. You can configure ActivityFeed.items_loader
with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the feed data returned with loaded items rather than item IDs.
48 49 50 51 52 |
# File 'lib/activity_feed/feed.rb', line 48 def (user_id, , , aggregate = ActivityFeed.aggregate) feederboard = ActivityFeed.feederboard_for(user_id, aggregate) feed_items = feederboard.members_from_score_range(, ) load_feed_items(feed_items) end |
#full_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object
Retrieve the entire activity feed for a given user_id
. You can configure ActivityFeed.items_loader
with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page returned with loaded items rather than item IDs.
30 31 32 33 34 |
# File 'lib/activity_feed/feed.rb', line 30 def full_feed(user_id, aggregate = ActivityFeed.aggregate) feederboard = ActivityFeed.feederboard_for(user_id, aggregate) feed_items = feederboard.leaders(1, :page_size => feederboard.total_members) load_feed_items(feed_items) end |
#remove_feeds(user_id) ⇒ Object
Remove the activity feeds for a given user_id
.
84 85 86 87 88 89 |
# File 'lib/activity_feed/feed.rb', line 84 def remove_feeds(user_id) ActivityFeed.redis.multi do |transaction| transaction.del(ActivityFeed.feed_key(user_id, false)) transaction.del(ActivityFeed.feed_key(user_id, true)) end end |
#total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: total_items
Return the total number of items in the activity feed.
75 76 77 |
# File 'lib/activity_feed/feed.rb', line 75 def total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate) ActivityFeed.feederboard_for(user_id, aggregate).total_members end |
#total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size) ⇒ Object Also known as: total_pages
Return the total number of pages in the activity feed.
63 64 65 |
# File 'lib/activity_feed/feed.rb', line 63 def total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size) ActivityFeed.feederboard_for(user_id, aggregate).total_pages_in(ActivityFeed.feed_key(user_id, aggregate), page_size) end |
#trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: trim
Trim an activity feed between two timestamps.
97 98 99 |
# File 'lib/activity_feed/feed.rb', line 97 def trim_feed(user_id, , , aggregate = ActivityFeed.aggregate) ActivityFeed.feederboard_for(user_id, aggregate).remove_members_in_score_range(, ) end |
#trim_to_size(user_id, size, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: trim_to
Trim an activity feed to a given size.
108 109 110 |
# File 'lib/activity_feed/feed.rb', line 108 def trim_to_size(user_id, size, aggregate = ActivityFeed.aggregate) ActivityFeed.feederboard_for(user_id, aggregate).remove_members_outside_rank(size) end |