leaderboard 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.markdown +4 -0
 - data/README.markdown +3 -0
 - data/lib/leaderboard.rb +36 -0
 - data/lib/leaderboard/version.rb +1 -1
 - data/spec/leaderboard_spec.rb +16 -0
 - data/spec/version_spec.rb +1 -1
 - metadata +4 -4
 
    
        data/CHANGELOG.markdown
    CHANGED
    
    | 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # CHANGELOG
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## leaderboard 2.4.0 (2012-07-30)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Added `all_leaders` and `all_leaders_from` methods to retreive all members from a leaderboard. You may also use the aliases `all_members` or `all_members_from`.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       3 
7 
     | 
    
         
             
            ## leaderboard 2.3.0 (2012-07-09)
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
9 
     | 
    
         
             
            * Added `expire_leaderboard(seconds)` to expire the leaderboard in a set number of seconds.
         
     | 
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -176,6 +176,9 @@ Below is an example of retrieving the first page in the leaderboard without scor 
     | 
|
| 
       176 
176 
     | 
    
         | 
| 
       177 
177 
     | 
    
         
             
            You can also use the `members` and `members_in` methods as aliases for the `leaders` and `leaders_in` methods.
         
     | 
| 
       178 
178 
     | 
    
         | 
| 
      
 179 
     | 
    
         
            +
            There are also a few convenience methods to be able to retrieve all leaders from a given leaderboard. They are `all_leaders` and `all_leaders_from`. You 
         
     | 
| 
      
 180 
     | 
    
         
            +
            may also use the aliases `all_members` or `all_members_from`. Use any of these methods sparingly as all the information in the leaderboard will be returned. 
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
       179 
182 
     | 
    
         
             
            Add more members to your leaderboard:
         
     | 
| 
       180 
183 
     | 
    
         | 
| 
       181 
184 
     | 
    
         
             
            ```ruby
         
     | 
    
        data/lib/leaderboard.rb
    CHANGED
    
    | 
         @@ -576,6 +576,42 @@ class Leaderboard 
     | 
|
| 
       576 
576 
     | 
    
         | 
| 
       577 
577 
     | 
    
         
             
              alias_method :members_in, :leaders_in
         
     | 
| 
       578 
578 
     | 
    
         | 
| 
      
 579 
     | 
    
         
            +
              # Retrieve all leaders from the leaderboard.
         
     | 
| 
      
 580 
     | 
    
         
            +
              #
         
     | 
| 
      
 581 
     | 
    
         
            +
              # @param options [Hash] Options to be used when retrieving the leaders from the leaderboard.
         
     | 
| 
      
 582 
     | 
    
         
            +
              #
         
     | 
| 
      
 583 
     | 
    
         
            +
              # @return the leaders from the leaderboard.
         
     | 
| 
      
 584 
     | 
    
         
            +
              def all_leaders(options = {})
         
     | 
| 
      
 585 
     | 
    
         
            +
                all_leaders_from(@leaderboard_name, options)
         
     | 
| 
      
 586 
     | 
    
         
            +
              end
         
     | 
| 
      
 587 
     | 
    
         
            +
             
     | 
| 
      
 588 
     | 
    
         
            +
              alias_method :all_members, :all_leaders
         
     | 
| 
      
 589 
     | 
    
         
            +
             
     | 
| 
      
 590 
     | 
    
         
            +
              # Retrieves all leaders from the named leaderboard.
         
     | 
| 
      
 591 
     | 
    
         
            +
              #
         
     | 
| 
      
 592 
     | 
    
         
            +
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
      
 593 
     | 
    
         
            +
              # @param options [Hash] Options to be used when retrieving the leaders from the named leaderboard.
         
     | 
| 
      
 594 
     | 
    
         
            +
              #
         
     | 
| 
      
 595 
     | 
    
         
            +
              # @return the named leaderboard.
         
     | 
| 
      
 596 
     | 
    
         
            +
              def all_leaders_from(leaderboard_name, options = {})
         
     | 
| 
      
 597 
     | 
    
         
            +
                leaderboard_options = DEFAULT_LEADERBOARD_REQUEST_OPTIONS.dup
         
     | 
| 
      
 598 
     | 
    
         
            +
                leaderboard_options.merge!(options)
         
     | 
| 
      
 599 
     | 
    
         
            +
             
     | 
| 
      
 600 
     | 
    
         
            +
                if @reverse
         
     | 
| 
      
 601 
     | 
    
         
            +
                  raw_leader_data = @redis_connection.zrange(leaderboard_name, 0, -1, :with_scores => false)
         
     | 
| 
      
 602 
     | 
    
         
            +
                else
         
     | 
| 
      
 603 
     | 
    
         
            +
                  raw_leader_data = @redis_connection.zrevrange(leaderboard_name, 0, -1, :with_scores => false)
         
     | 
| 
      
 604 
     | 
    
         
            +
                end
         
     | 
| 
      
 605 
     | 
    
         
            +
             
     | 
| 
      
 606 
     | 
    
         
            +
                if raw_leader_data
         
     | 
| 
      
 607 
     | 
    
         
            +
                  return ranked_in_list_in(leaderboard_name, raw_leader_data, leaderboard_options)
         
     | 
| 
      
 608 
     | 
    
         
            +
                else
         
     | 
| 
      
 609 
     | 
    
         
            +
                  return []
         
     | 
| 
      
 610 
     | 
    
         
            +
                end
         
     | 
| 
      
 611 
     | 
    
         
            +
              end
         
     | 
| 
      
 612 
     | 
    
         
            +
             
     | 
| 
      
 613 
     | 
    
         
            +
              alias_method :all_members_from, :all_leaders_from
         
     | 
| 
      
 614 
     | 
    
         
            +
             
     | 
| 
       579 
615 
     | 
    
         
             
              # Retrieve members from the leaderboard within a given score range.
         
     | 
| 
       580 
616 
     | 
    
         
             
              #
         
     | 
| 
       581 
617 
     | 
    
         
             
              # @param minimum_score [float] Minimum score (inclusive).
         
     | 
    
        data/lib/leaderboard/version.rb
    CHANGED
    
    
    
        data/spec/leaderboard_spec.rb
    CHANGED
    
    | 
         @@ -141,6 +141,22 @@ describe 'Leaderboard' do 
     | 
|
| 
       141 
141 
     | 
    
         
             
                leaders.size.should be(1)
         
     | 
| 
       142 
142 
     | 
    
         
             
              end
         
     | 
| 
       143 
143 
     | 
    
         | 
| 
      
 144 
     | 
    
         
            +
              %w(members leaders).each do |method|
         
     | 
| 
      
 145 
     | 
    
         
            +
                it "should return the entire leaderboard when you call 'all_#{method}'" do
         
     | 
| 
      
 146 
     | 
    
         
            +
                  rank_members_in_leaderboard(27)
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                  @leaderboard.total_members.should be(27)
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                  members = @leaderboard.send("all_#{method}")
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                  members.size.should be(27)
         
     | 
| 
      
 153 
     | 
    
         
            +
                  members[0][:member].should == 'member_27'
         
     | 
| 
      
 154 
     | 
    
         
            +
                  members[-2][:member].should == 'member_2'
         
     | 
| 
      
 155 
     | 
    
         
            +
                  members[-1][:member].should == 'member_1'
         
     | 
| 
      
 156 
     | 
    
         
            +
                  members[-1][:score].to_i.should be(1)
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
       144 
160 
     | 
    
         
             
              it 'should allow you to retrieve members in a given score range' do
         
     | 
| 
       145 
161 
     | 
    
         
             
                rank_members_in_leaderboard(Leaderboard::DEFAULT_PAGE_SIZE)
         
     | 
| 
       146 
162 
     | 
    
         | 
    
        data/spec/version_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: leaderboard
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.4.0
         
     | 
| 
       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: 2012-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-07-30 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: redis
         
     | 
| 
         @@ -97,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       97 
97 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       98 
98 
     | 
    
         
             
                  segments:
         
     | 
| 
       99 
99 
     | 
    
         
             
                  - 0
         
     | 
| 
       100 
     | 
    
         
            -
                  hash: - 
     | 
| 
      
 100 
     | 
    
         
            +
                  hash: -2580404106533235495
         
     | 
| 
       101 
101 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       102 
102 
     | 
    
         
             
              none: false
         
     | 
| 
       103 
103 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       106 
106 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       107 
107 
     | 
    
         
             
                  segments:
         
     | 
| 
       108 
108 
     | 
    
         
             
                  - 0
         
     | 
| 
       109 
     | 
    
         
            -
                  hash: - 
     | 
| 
      
 109 
     | 
    
         
            +
                  hash: -2580404106533235495
         
     | 
| 
       110 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       111 
111 
     | 
    
         
             
            rubyforge_project: leaderboard
         
     | 
| 
       112 
112 
     | 
    
         
             
            rubygems_version: 1.8.23
         
     |