class Rack::Ratelimit::RedisCounter

Public Class Methods

new(redis, name, period) click to toggle source
# File lib/rack/ratelimit.rb, line 213
def initialize(redis, name, period)
  @redis, @name, @period = redis, name, period
end

Public Instance Methods

increment(classification, epoch) click to toggle source

Increment the request counter and return the current count.

# File lib/rack/ratelimit.rb, line 218
def increment(classification, epoch)
  key = 'rack-ratelimit/%s/%s/%i' % [@name, classification, epoch]

  # Returns [count, expire_ok] response for each multi command.
  # Return the first, the count.
  @redis.multi do |redis|
    redis.incr key
    redis.expire key, @period
  end.first
rescue Redis::BaseError
  0
end