leaderboard 3.0.1 → 3.0.2
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/Gemfile +1 -1
 - data/LICENSE.txt +1 -1
 - data/README.markdown +9 -3
 - data/lib/leaderboard.rb +28 -22
 - data/lib/leaderboard/version.rb +1 -2
 - data/spec/leaderboard_spec.rb +8 -0
 - data/spec/version_spec.rb +1 -1
 - metadata +9 -3
 
    
        data/CHANGELOG.markdown
    CHANGED
    
    | 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # CHANGELOG
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## leaderboard 3.0.2 (2013-02-22)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Fixed a data leak in `expire_leaderboard` and `expire_leaderboard_at` to also set expiration on the member data hash.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       3 
7 
     | 
    
         
             
            ## leaderboard 3.0.1 (2012-12-19)
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
9 
     | 
    
         
             
            * Fixed a bug in `remove_member` that would remove all of the optional member data.
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/LICENSE.txt
    CHANGED
    
    
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -146,6 +146,12 @@ highscore_lb.remove_member_data('84849292') 
     | 
|
| 
       146 
146 
     | 
    
         
             
            ```
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
       148 
148 
     | 
    
         
             
            If you delete the leaderboard, ALL of the member data is deleted as well.
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            #### Optional member data notes
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
            If you use optional member data, the use of the `remove_members_in_score_range` will leave data around in the member data 
         
     | 
| 
      
 153 
     | 
    
         
            +
            hash. This is because the internal Redis method, `zremrangebyscore`, only returns the number of items removed. It does 
         
     | 
| 
      
 154 
     | 
    
         
            +
            not return the members that it removed.
         
     | 
| 
       149 
155 
     | 
    
         | 
| 
       150 
156 
     | 
    
         
             
            Get some information about a specific member(s) in the leaderboard:
         
     | 
| 
       151 
157 
     | 
    
         | 
| 
         @@ -404,10 +410,10 @@ end 
     | 
|
| 
       404 
410 
     | 
    
         | 
| 
       405 
411 
     | 
    
         
             
            The following ports have been made of the leaderboard gem.
         
     | 
| 
       406 
412 
     | 
    
         | 
| 
      
 413 
     | 
    
         
            +
            * CoffeeScript: https://github.com/agoragames/leaderboard-coffeescript
         
     | 
| 
       407 
414 
     | 
    
         
             
            * Java: https://github.com/agoragames/java-leaderboard
         
     | 
| 
       408 
     | 
    
         
            -
            * NodeJS: https://github.com/omork/node-leaderboard
         
     | 
| 
       409 
415 
     | 
    
         
             
            * PHP: https://github.com/agoragames/php-leaderboard
         
     | 
| 
       410 
     | 
    
         
            -
            * Python: https://github.com/agoragames/python 
     | 
| 
      
 416 
     | 
    
         
            +
            * Python: https://github.com/agoragames/leaderboard-python
         
     | 
| 
       411 
417 
     | 
    
         
             
            * Scala: https://github.com/agoragames/scala-leaderboard
         
     | 
| 
       412 
418 
     | 
    
         | 
| 
       413 
419 
     | 
    
         
             
            ## Contributing to leaderboard
         
     | 
| 
         @@ -422,5 +428,5 @@ The following ports have been made of the leaderboard gem. 
     | 
|
| 
       422 
428 
     | 
    
         | 
| 
       423 
429 
     | 
    
         
             
            ## Copyright
         
     | 
| 
       424 
430 
     | 
    
         | 
| 
       425 
     | 
    
         
            -
            Copyright (c) 2011- 
     | 
| 
      
 431 
     | 
    
         
            +
            Copyright (c) 2011-2013 David Czarnecki. See LICENSE.txt for further details.
         
     | 
| 
       426 
432 
     | 
    
         | 
    
        data/lib/leaderboard.rb
    CHANGED
    
    | 
         @@ -109,7 +109,7 @@ class Leaderboard 
     | 
|
| 
       109 
109 
     | 
    
         
             
              #
         
     | 
| 
       110 
110 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       111 
111 
     | 
    
         
             
              # @param score [float] Member score.
         
     | 
| 
       112 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 112 
     | 
    
         
            +
              # @param member_data [String] Optional member data.
         
     | 
| 
       113 
113 
     | 
    
         
             
              def rank_member(member, score, member_data = nil)
         
     | 
| 
       114 
114 
     | 
    
         
             
                rank_member_in(@leaderboard_name, member, score, member_data)
         
     | 
| 
       115 
115 
     | 
    
         
             
              end
         
     | 
| 
         @@ -119,7 +119,7 @@ class Leaderboard 
     | 
|
| 
       119 
119 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       120 
120 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       121 
121 
     | 
    
         
             
              # @param score [float] Member score.
         
     | 
| 
       122 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 122 
     | 
    
         
            +
              # @param member_data [String] Optional member data.
         
     | 
| 
       123 
123 
     | 
    
         
             
              def rank_member_in(leaderboard_name, member, score, member_data = nil)
         
     | 
| 
       124 
124 
     | 
    
         
             
                @redis_connection.multi do |transaction|
         
     | 
| 
       125 
125 
     | 
    
         
             
                  transaction.zadd(leaderboard_name, score, member)
         
     | 
| 
         @@ -127,7 +127,7 @@ class Leaderboard 
     | 
|
| 
       127 
127 
     | 
    
         
             
                end
         
     | 
| 
       128 
128 
     | 
    
         
             
              end
         
     | 
| 
       129 
129 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
              # Rank a member in the leaderboard based on execution of the +rank_conditional+. 
     | 
| 
      
 130 
     | 
    
         
            +
              # Rank a member in the leaderboard based on execution of the +rank_conditional+.
         
     | 
| 
       131 
131 
     | 
    
         
             
              #
         
     | 
| 
       132 
132 
     | 
    
         
             
              # The +rank_conditional+ is passed the following parameters:
         
     | 
| 
       133 
133 
     | 
    
         
             
              #   member: Member name.
         
     | 
| 
         @@ -138,13 +138,13 @@ class Leaderboard 
     | 
|
| 
       138 
138 
     | 
    
         
             
              #
         
     | 
| 
       139 
139 
     | 
    
         
             
              # @param rank_conditional [lambda] Lambda which must return +true+ or +false+ that controls whether or not the member is ranked in the leaderboard.
         
     | 
| 
       140 
140 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       141 
     | 
    
         
            -
              # @param score [ 
     | 
| 
       142 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 141 
     | 
    
         
            +
              # @param score [float] Member score.
         
     | 
| 
      
 142 
     | 
    
         
            +
              # @param member_data [String] Optional member_data.
         
     | 
| 
       143 
143 
     | 
    
         
             
              def rank_member_if(rank_conditional, member, score, member_data = nil)
         
     | 
| 
       144 
144 
     | 
    
         
             
                rank_member_if_in(@leaderboard_name, rank_conditional, member, score, member_data)
         
     | 
| 
       145 
145 
     | 
    
         
             
              end
         
     | 
| 
       146 
146 
     | 
    
         | 
| 
       147 
     | 
    
         
            -
              # Rank a member in the named leaderboard based on execution of the +rank_conditional+. 
     | 
| 
      
 147 
     | 
    
         
            +
              # Rank a member in the named leaderboard based on execution of the +rank_conditional+.
         
     | 
| 
       148 
148 
     | 
    
         
             
              #
         
     | 
| 
       149 
149 
     | 
    
         
             
              # The +rank_conditional+ is passed the following parameters:
         
     | 
| 
       150 
150 
     | 
    
         
             
              #   member: Member name.
         
     | 
| 
         @@ -156,10 +156,10 @@ class Leaderboard 
     | 
|
| 
       156 
156 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       157 
157 
     | 
    
         
             
              # @param rank_conditional [lambda] Lambda which must return +true+ or +false+ that controls whether or not the member is ranked in the leaderboard.
         
     | 
| 
       158 
158 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       159 
     | 
    
         
            -
              # @param score [ 
     | 
| 
       160 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 159 
     | 
    
         
            +
              # @param score [float] Member score.
         
     | 
| 
      
 160 
     | 
    
         
            +
              # @param member_data [String] Optional member_data.
         
     | 
| 
       161 
161 
     | 
    
         
             
              def rank_member_if_in(leaderboard_name, rank_conditional, member, score, member_data = nil)
         
     | 
| 
       162 
     | 
    
         
            -
                current_score = @redis_connection.zscore(leaderboard_name, member) 
     | 
| 
      
 162 
     | 
    
         
            +
                current_score = @redis_connection.zscore(leaderboard_name, member)
         
     | 
| 
       163 
163 
     | 
    
         
             
                current_score = current_score.to_f if current_score
         
     | 
| 
       164 
164 
     | 
    
         | 
| 
       165 
165 
     | 
    
         
             
                if rank_conditional.call(member, current_score, score, member_data, {:reverse => @reverse})
         
     | 
| 
         @@ -171,7 +171,7 @@ class Leaderboard 
     | 
|
| 
       171 
171 
     | 
    
         
             
              #
         
     | 
| 
       172 
172 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       173 
173 
     | 
    
         
             
              #
         
     | 
| 
       174 
     | 
    
         
            -
              # @return  
     | 
| 
      
 174 
     | 
    
         
            +
              # @return String of optional member data.
         
     | 
| 
       175 
175 
     | 
    
         
             
              def member_data_for(member)
         
     | 
| 
       176 
176 
     | 
    
         
             
                member_data_for_in(@leaderboard_name, member)
         
     | 
| 
       177 
177 
     | 
    
         
             
              end
         
     | 
| 
         @@ -181,7 +181,7 @@ class Leaderboard 
     | 
|
| 
       181 
181 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       182 
182 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       183 
183 
     | 
    
         
             
              #
         
     | 
| 
       184 
     | 
    
         
            -
              # @return  
     | 
| 
      
 184 
     | 
    
         
            +
              # @return String of optional member data.
         
     | 
| 
       185 
185 
     | 
    
         
             
              def member_data_for_in(leaderboard_name, member)
         
     | 
| 
       186 
186 
     | 
    
         
             
                @redis_connection.hget(member_data_key(leaderboard_name), member)
         
     | 
| 
       187 
187 
     | 
    
         
             
              end
         
     | 
| 
         @@ -189,7 +189,7 @@ class Leaderboard 
     | 
|
| 
       189 
189 
     | 
    
         
             
              # Update the optional member data for a given member in the leaderboard.
         
     | 
| 
       190 
190 
     | 
    
         
             
              #
         
     | 
| 
       191 
191 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       192 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 192 
     | 
    
         
            +
              # @param member_data [String] Optional member data.
         
     | 
| 
       193 
193 
     | 
    
         
             
              def update_member_data(member, member_data)
         
     | 
| 
       194 
194 
     | 
    
         
             
                update_member_data_in(@leaderboard_name, member, member_data)
         
     | 
| 
       195 
195 
     | 
    
         
             
              end
         
     | 
| 
         @@ -198,7 +198,7 @@ class Leaderboard 
     | 
|
| 
       198 
198 
     | 
    
         
             
              #
         
     | 
| 
       199 
199 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       200 
200 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       201 
     | 
    
         
            -
              # @param member_data [ 
     | 
| 
      
 201 
     | 
    
         
            +
              # @param member_data [String] Optional member data.
         
     | 
| 
       202 
202 
     | 
    
         
             
              def update_member_data_in(leaderboard_name, member, member_data)
         
     | 
| 
       203 
203 
     | 
    
         
             
                @redis_connection.hset(member_data_key(leaderboard_name), member, member_data)
         
     | 
| 
       204 
204 
     | 
    
         
             
              end
         
     | 
| 
         @@ -336,7 +336,7 @@ class Leaderboard 
     | 
|
| 
       336 
336 
     | 
    
         
             
              # Retrieve the rank for a member in the leaderboard.
         
     | 
| 
       337 
337 
     | 
    
         
             
              #
         
     | 
| 
       338 
338 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       339 
     | 
    
         
            -
              # 
     | 
| 
      
 339 
     | 
    
         
            +
              #
         
     | 
| 
       340 
340 
     | 
    
         
             
              # @return the rank for a member in the leaderboard.
         
     | 
| 
       341 
341 
     | 
    
         
             
              def rank_for(member)
         
     | 
| 
       342 
342 
     | 
    
         
             
                rank_for_in(@leaderboard_name, member)
         
     | 
| 
         @@ -346,7 +346,7 @@ class Leaderboard 
     | 
|
| 
       346 
346 
     | 
    
         
             
              #
         
     | 
| 
       347 
347 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       348 
348 
     | 
    
         
             
              # @param member [String] Member name.
         
     | 
| 
       349 
     | 
    
         
            -
              # 
     | 
| 
      
 349 
     | 
    
         
            +
              #
         
     | 
| 
       350 
350 
     | 
    
         
             
              # @return the rank for a member in the leaderboard.
         
     | 
| 
       351 
351 
     | 
    
         
             
              def rank_for_in(leaderboard_name, member)
         
     | 
| 
       352 
352 
     | 
    
         
             
                if @reverse
         
     | 
| 
         @@ -372,7 +372,7 @@ class Leaderboard 
     | 
|
| 
       372 
372 
     | 
    
         
             
              #
         
     | 
| 
       373 
373 
     | 
    
         
             
              # @return the score for a member in the leaderboard or +nil+ if the member is not in the leaderboard.
         
     | 
| 
       374 
374 
     | 
    
         
             
              def score_for_in(leaderboard_name, member)
         
     | 
| 
       375 
     | 
    
         
            -
                score = @redis_connection.zscore(leaderboard_name, member) 
     | 
| 
      
 375 
     | 
    
         
            +
                score = @redis_connection.zscore(leaderboard_name, member)
         
     | 
| 
       376 
376 
     | 
    
         
             
                score.to_f if score
         
     | 
| 
       377 
377 
     | 
    
         
             
              end
         
     | 
| 
       378 
378 
     | 
    
         | 
| 
         @@ -422,8 +422,8 @@ class Leaderboard 
     | 
|
| 
       422 
422 
     | 
    
         | 
| 
       423 
423 
     | 
    
         
             
                responses[0] = responses[0].to_f if responses[0]
         
     | 
| 
       424 
424 
     | 
    
         
             
                responses[1] = responses[1] + 1 rescue nil
         
     | 
| 
       425 
     | 
    
         
            -
             
     | 
| 
       426 
     | 
    
         
            -
                {:member => member, :score => responses[0], :rank => responses[1]} 
     | 
| 
      
 425 
     | 
    
         
            +
             
     | 
| 
      
 426 
     | 
    
         
            +
                {:member => member, :score => responses[0], :rank => responses[1]}
         
     | 
| 
       427 
427 
     | 
    
         
             
              end
         
     | 
| 
       428 
428 
     | 
    
         | 
| 
       429 
429 
     | 
    
         
             
              # Remove members from the leaderboard in a given score range.
         
     | 
| 
         @@ -521,7 +521,10 @@ class Leaderboard 
     | 
|
| 
       521 
521 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       522 
522 
     | 
    
         
             
              # @param seconds [int] Number of seconds after which the leaderboard will be expired.
         
     | 
| 
       523 
523 
     | 
    
         
             
              def expire_leaderboard_for(leaderboard_name, seconds)
         
     | 
| 
       524 
     | 
    
         
            -
                @redis_connection. 
     | 
| 
      
 524 
     | 
    
         
            +
                @redis_connection.multi do |transaction|
         
     | 
| 
      
 525 
     | 
    
         
            +
                  transaction.expire(leaderboard_name, seconds)
         
     | 
| 
      
 526 
     | 
    
         
            +
                  transaction.expire(member_data_key(leaderboard_name), seconds)
         
     | 
| 
      
 527 
     | 
    
         
            +
                end
         
     | 
| 
       525 
528 
     | 
    
         
             
              end
         
     | 
| 
       526 
529 
     | 
    
         | 
| 
       527 
530 
     | 
    
         
             
              # Expire the current leaderboard at a specific UNIX timestamp. Do not use this with
         
     | 
| 
         @@ -540,7 +543,10 @@ class Leaderboard 
     | 
|
| 
       540 
543 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       541 
544 
     | 
    
         
             
              # @param timestamp [int] UNIX timestamp at which the leaderboard will be expired.
         
     | 
| 
       542 
545 
     | 
    
         
             
              def expire_leaderboard_at_for(leaderboard_name, timestamp)
         
     | 
| 
       543 
     | 
    
         
            -
                @redis_connection. 
     | 
| 
      
 546 
     | 
    
         
            +
                @redis_connection.multi do |transaction|
         
     | 
| 
      
 547 
     | 
    
         
            +
                  transaction.expireat(leaderboard_name, timestamp)
         
     | 
| 
      
 548 
     | 
    
         
            +
                  transaction.expireat(member_data_key(leaderboard_name), timestamp)
         
     | 
| 
      
 549 
     | 
    
         
            +
                end
         
     | 
| 
       544 
550 
     | 
    
         
             
              end
         
     | 
| 
       545 
551 
     | 
    
         | 
| 
       546 
552 
     | 
    
         
             
              # Retrieve a page of leaders from the leaderboard.
         
     | 
| 
         @@ -873,10 +879,10 @@ class Leaderboard 
     | 
|
| 
       873 
879 
     | 
    
         
             
              # Key for retrieving optional member data.
         
     | 
| 
       874 
880 
     | 
    
         
             
              #
         
     | 
| 
       875 
881 
     | 
    
         
             
              # @param leaderboard_name [String] Name of the leaderboard.
         
     | 
| 
       876 
     | 
    
         
            -
              # 
     | 
| 
      
 882 
     | 
    
         
            +
              #
         
     | 
| 
       877 
883 
     | 
    
         
             
              # @return a key in the form of +leaderboard_name:member_data+
         
     | 
| 
       878 
884 
     | 
    
         
             
              def member_data_key(leaderboard_name)
         
     | 
| 
       879 
     | 
    
         
            -
                "#{leaderboard_name}:member_data" 
     | 
| 
      
 885 
     | 
    
         
            +
                "#{leaderboard_name}:member_data"
         
     | 
| 
       880 
886 
     | 
    
         
             
              end
         
     | 
| 
       881 
887 
     | 
    
         | 
| 
       882 
888 
     | 
    
         
             
              # Validate and return the page size. Returns the +DEFAULT_PAGE_SIZE+ if the page size is less than 1.
         
     | 
    
        data/lib/leaderboard/version.rb
    CHANGED
    
    
    
        data/spec/leaderboard_spec.rb
    CHANGED
    
    | 
         @@ -528,6 +528,10 @@ describe 'Leaderboard' do 
     | 
|
| 
       528 
528 
     | 
    
         
             
                  ttl.should be > 1
         
     | 
| 
       529 
529 
     | 
    
         
             
                  ttl.should be <= 3
         
     | 
| 
       530 
530 
     | 
    
         
             
                end
         
     | 
| 
      
 531 
     | 
    
         
            +
                @redis_connection.ttl(@leaderboard.send(:member_data_key, @leaderboard.leaderboard_name)).tap do |ttl|
         
     | 
| 
      
 532 
     | 
    
         
            +
                  ttl.should be > 1
         
     | 
| 
      
 533 
     | 
    
         
            +
                  ttl.should be <= 3
         
     | 
| 
      
 534 
     | 
    
         
            +
                end
         
     | 
| 
       531 
535 
     | 
    
         
             
              end
         
     | 
| 
       532 
536 
     | 
    
         | 
| 
       533 
537 
     | 
    
         
             
              it 'should set an expire on the leaderboard using a timestamp' do
         
     | 
| 
         @@ -538,6 +542,10 @@ describe 'Leaderboard' do 
     | 
|
| 
       538 
542 
     | 
    
         
             
                  ttl.should be > 1
         
     | 
| 
       539 
543 
     | 
    
         
             
                  ttl.should be <= 10
         
     | 
| 
       540 
544 
     | 
    
         
             
                end
         
     | 
| 
      
 545 
     | 
    
         
            +
                @redis_connection.ttl(@leaderboard.send(:member_data_key, @leaderboard.leaderboard_name)).tap do |ttl|
         
     | 
| 
      
 546 
     | 
    
         
            +
                  ttl.should be > 1
         
     | 
| 
      
 547 
     | 
    
         
            +
                  ttl.should be <= 10
         
     | 
| 
      
 548 
     | 
    
         
            +
                end
         
     | 
| 
       541 
549 
     | 
    
         
             
              end
         
     | 
| 
       542 
550 
     | 
    
         | 
| 
       543 
551 
     | 
    
         
             
              it 'should allow you to rank multiple members with a variable number of arguments' do
         
     | 
    
        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: 3.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.0.2
         
     | 
| 
       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:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-02-22 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: redis
         
     | 
| 
         @@ -93,15 +93,21 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       93 
93 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       94 
94 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       95 
95 
     | 
    
         
             
                  version: '0'
         
     | 
| 
      
 96 
     | 
    
         
            +
                  segments:
         
     | 
| 
      
 97 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 98 
     | 
    
         
            +
                  hash: 1304683116950225093
         
     | 
| 
       96 
99 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       97 
100 
     | 
    
         
             
              none: false
         
     | 
| 
       98 
101 
     | 
    
         
             
              requirements:
         
     | 
| 
       99 
102 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       100 
103 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       101 
104 
     | 
    
         
             
                  version: '0'
         
     | 
| 
      
 105 
     | 
    
         
            +
                  segments:
         
     | 
| 
      
 106 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 107 
     | 
    
         
            +
                  hash: 1304683116950225093
         
     | 
| 
       102 
108 
     | 
    
         
             
            requirements: []
         
     | 
| 
       103 
109 
     | 
    
         
             
            rubyforge_project: leaderboard
         
     | 
| 
       104 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 110 
     | 
    
         
            +
            rubygems_version: 1.8.25
         
     | 
| 
       105 
111 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       106 
112 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       107 
113 
     | 
    
         
             
            summary: Leaderboards backed by Redis in Ruby
         
     |