Class: Almicube::Ranking::Base
- Inherits:
-
Object
- Object
- Almicube::Ranking::Base
- Defined in:
- lib/almicube/ranking/base.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#aggregator ⇒ Object
readonly
Returns the value of attribute aggregator.
-
#bundler ⇒ Object
readonly
Returns the value of attribute bundler.
-
#class_name ⇒ Object
readonly
Returns the value of attribute class_name.
-
#date ⇒ Object
readonly
Returns the value of attribute date.
-
#per_page ⇒ Object
Returns the value of attribute per_page.
-
#selector ⇒ Object
readonly
Returns the value of attribute selector.
Instance Method Summary collapse
- #aggregate(options = {}) ⇒ Object
- #aggregate!(options = {}) ⇒ Object
- #bundled_keys ⇒ Object
- #connection ⇒ Object
- #data? ⇒ Boolean
-
#initialize(options = {}) ⇒ Base
constructor
A new instance of Base.
- #page(page = 1) ⇒ Object
- #records ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Base
Returns a new instance of Base.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/almicube/ranking/base.rb', line 7 def initialize(={}) @selector = [:selector] @aggregator = [:aggregator] || Aggregator::SumAggregator.new @bundler = [:bundler] @prefix = [:prefix] @suffix = [:suffix] @date = [:date] || Date.today @class_name = [:class_name] @class_name = @class_name.constantize if @class_name.is_a? String @per_page = [:per_page] || 10 @selector.ranking = self unless @selector.nil? @aggregator.ranking = self unless @aggregator.nil? @bundler.ranking = self unless @bundler.nil? end |
Instance Attribute Details
#aggregator ⇒ Object (readonly)
Returns the value of attribute aggregator.
4 5 6 |
# File 'lib/almicube/ranking/base.rb', line 4 def aggregator @aggregator end |
#bundler ⇒ Object (readonly)
Returns the value of attribute bundler.
4 5 6 |
# File 'lib/almicube/ranking/base.rb', line 4 def bundler @bundler end |
#class_name ⇒ Object (readonly)
Returns the value of attribute class_name.
4 5 6 |
# File 'lib/almicube/ranking/base.rb', line 4 def class_name @class_name end |
#date ⇒ Object (readonly)
Returns the value of attribute date.
4 5 6 |
# File 'lib/almicube/ranking/base.rb', line 4 def date @date end |
#per_page ⇒ Object
Returns the value of attribute per_page.
5 6 7 |
# File 'lib/almicube/ranking/base.rb', line 5 def per_page @per_page end |
#selector ⇒ Object (readonly)
Returns the value of attribute selector.
4 5 6 |
# File 'lib/almicube/ranking/base.rb', line 4 def selector @selector end |
Instance Method Details
#aggregate(options = {}) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/almicube/ranking/base.rb', line 47 def aggregate( = {}) aggregate! true rescue Exception => e false end |
#aggregate!(options = {}) ⇒ Object
43 44 45 |
# File 'lib/almicube/ranking/base.rb', line 43 def aggregate!( = {}) @aggregator.aggregate self end |
#bundled_keys ⇒ Object
27 28 29 |
# File 'lib/almicube/ranking/base.rb', line 27 def bundled_keys bundler.keys || [] end |
#connection ⇒ Object
31 32 33 |
# File 'lib/almicube/ranking/base.rb', line 31 def connection Almicube::Config.config.connection end |
#data? ⇒ Boolean
54 55 56 |
# File 'lib/almicube/ranking/base.rb', line 54 def data? false end |
#page(page = 1) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/almicube/ranking/base.rb', line 35 def page(page=1) aggregate! page = [1, page.to_i].max revrange = connection.zrevrange(key, (page - 1) * per_page, page * per_page - 1) records = class_name.where("id IN (?)", revrange).all revrange.inject([]) { |l, v| l << records.detect { |r| r.to_param == v } } end |
#records ⇒ Object
23 24 25 |
# File 'lib/almicube/ranking/base.rb', line 23 def records selector.records end |