Module: Berater

Extended by:
Berater
Included in:
Berater
Defined in:
lib/berater.rb,
lib/berater/dsl.rb,
lib/berater/lock.rb,
lib/berater/utils.rb,
lib/berater/limiter.rb,
lib/berater/version.rb,
lib/berater/inhibitor.rb,
lib/berater/test_mode.rb,
lib/berater/unlimiter.rb,
lib/berater/lua_script.rb,
lib/berater/rate_limiter.rb,
lib/berater/rspec/matchers.rb,
lib/berater/static_limiter.rb,
lib/berater/concurrency_limiter.rb

Defined Under Namespace

Modules: DSL, Matchers, TestMode, Utils Classes: ConcurrencyLimiter, Inhibitor, Limiter, Lock, LuaScript, Overloaded, RateLimiter, StaticLimiter, Unlimiter

Constant Summary collapse

VERSION =
'0.8.0'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#redisObject

Returns the value of attribute redis.



12
13
14
# File 'lib/berater.rb', line 12

def redis
  @redis
end

Instance Method Details

#configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Berater)

    the object that the method was called on



14
15
16
# File 'lib/berater.rb', line 14

def configure
  yield self
end

#expungeObject



45
46
47
48
49
# File 'lib/berater.rb', line 45

def expunge
  redis.scan_each(match: "#{self.name}*") do |key|
    redis.del key
  end
end

#LuaScript(source) ⇒ Object



52
53
54
# File 'lib/berater/lua_script.rb', line 52

def LuaScript(source)
  LuaScript.new(source)
end

#new(key, capacity, **opts) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/berater.rb', line 22

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

#resetObject



18
19
20
# File 'lib/berater.rb', line 18

def reset
  @redis = nil
end