Class: Fatboy
- Inherits:
-
Object
- Object
- Fatboy
- Defined in:
- lib/fatboy.rb,
lib/fatboy/many.rb,
lib/fatboy/helpers.rb,
lib/fatboy/version.rb,
lib/fatboy/popularity.rb,
lib/fatboy/viewed_item.rb,
lib/fatboy/view_tracker.rb,
lib/fatboy/time_based_popularity.rb
Overview
It provides a variety of functionality.
Defined Under Namespace
Modules: Helpers Classes: Many, Popularity, TimeBasedPopularity, ViewTracker, ViewedItem
Constant Summary collapse
- HOUR_FORMAT_STR =
Format string we use to store the views per hour
"%Y%m%d%H"
- DAY_FORMAT_STR =
Format string we use to store the views per day
"%Y%m%d"
- MONTH_FORMAT_STR =
Format string we use to store the views per month
"%Y%m"
- YEAR_FORMAT_STR =
Format string we use to store the views per year
"%Y"
- VERSION =
Gem version of Fatboy
"0.0.4"
Instance Method Summary collapse
-
#[](obj) ⇒ Object
let users view with a shorthand.
-
#initialize(redis: Redis.new) ⇒ Fatboy
constructor
Create a new Fatboy.
-
#many ⇒ Object
Many provides a way to view many different models at once, for speed reasons.
-
#popular(model) ⇒ Object
This method returns a Fatboy::Popularity, the main interface for determining the popularity of your models.
-
#view(obj) ⇒ Object
Say that you have viewed an object, making the proper records for hour, day, month, and year.
- #views_for(model) ⇒ Object
Constructor Details
#initialize(redis: Redis.new) ⇒ Fatboy
Create a new Fatboy. Options:
* +redis:+ : The redis to store views in. By default, Redis.new
14 15 16 |
# File 'lib/fatboy.rb', line 14 def initialize(redis: Redis.new) @redis = redis end |
Instance Method Details
#[](obj) ⇒ Object
let users view with a shorthand
45 46 47 |
# File 'lib/fatboy.rb', line 45 def [](obj) view(obj) end |
#many ⇒ Object
Many provides a way to view many different models at once, for speed reasons.
Great if you need to view a lot of models.
22 23 24 |
# File 'lib/fatboy.rb', line 22 def many Fatboy::Many.new(@redis) end |
#popular(model) ⇒ Object
This method returns a Fatboy::Popularity, the main interface for determining the popularity of your models. Example:
fatboy.popular(Image)
fatboy.popular("Image")
fatboy.popular(model.class)
55 56 57 |
# File 'lib/fatboy.rb', line 55 def popular(model) Popularity.new(model, @redis) end |
#view(obj) ⇒ Object
Say that you have viewed an object, making the proper records for hour, day, month, and year.
-
model
- a model of some sort. Should quack like an ActiveRecord model (that is, responding to .id)
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/fatboy.rb', line 32 def view(obj) throw ArgumentError.new("That doesn't quack like a model!") unless obj.respond_to?(:id) stores = Fatboy::Helpers.all_format(Time.now).map do |time| Fatboy::Helpers.format_store(obj.class.to_s, time) end @redis.pipelined do stores.each do |store| inc_member(store, obj.id) end end end |
#views_for(model) ⇒ Object
25 26 27 |
# File 'lib/fatboy.rb', line 25 def views_for(model) Fatboy::ViewTracker.new(@redis, model) end |