module Berater

Constants

VERSION

Attributes

redis[RW]

Public Instance Methods

LuaScript(source) click to toggle source
# File lib/berater/lua_script.rb, line 52
def LuaScript(source)
  LuaScript.new(source)
end
configure() { |self| ... } click to toggle source
# File lib/berater.rb, line 16
def configure
  yield self
end
expunge() click to toggle source
# File lib/berater.rb, line 53
def expunge
  redis.scan_each(match: "#{self.name}*") do |key|
    redis.del key
  end
end
limiters() click to toggle source
# File lib/berater.rb, line 20
def limiters
  @limiters ||= LimiterSet.new
end
middleware(&block) click to toggle source
# File lib/berater.rb, line 24
def middleware(&block)
  (@middleware ||= Meddleware.new).tap do
    @middleware.instance_eval(&block) if block_given?
  end
end
new(key, capacity, **opts) click to toggle source
# File lib/berater.rb, line 30
def new(key, capacity, **opts)
  args = []

  case capacity
  when Float::INFINITY
    Berater::Unlimiter
  when 0
    Berater::Inhibitor
  else
    if opts[:interval]
      args << opts.delete(:interval)
      Berater::RateLimiter
    elsif opts[:timeout]
      Berater::ConcurrencyLimiter
    else
      Berater::StaticLimiter
    end
  end.yield_self do |klass|
    args = [ key, capacity, *args ].compact
    klass.new(*args, **opts)
  end
end
reset() click to toggle source
# File lib/berater.rb, line 59
def reset
  @redis = nil
  limiters.clear
  middleware.clear
end