lib/congestion.rb
require 'redis'
require 'congestion/version'
require 'congestion/rate_limiter'
module Congestion
class << self
attr_accessor :default_options
attr_accessor :redis
end
self.default_options = {
namespace: 'congestion', # Redis key namespace
interval: 1, # 1 second
max_in_interval: 1, # 1 / second
min_delay: 0, # none
track_rejected: true
}
self.redis = ->{
Redis.new
}
def self.request(key, opts = { })
RateLimiter.new redis.call, key, default_options.merge(opts)
end
end