Class: Rollie::RateLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/rollie/rate_limiter.rb

Instance Method Summary collapse

Constructor Details

#initialize(key, options = {}) ⇒ RateLimiter

Returns a new instance of RateLimiter.



5
6
7
8
9
# File 'lib/rollie/rate_limiter.rb', line 5

def initialize(key, options = {})
  @key = "#{options[:namespace]}#{key}"
  @limit = options[:limit] || 25
  @interval = (options[:interval] || 1000) * 1000
end

Instance Method Details

#within_limitObject

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rollie/rate_limiter.rb', line 11

def within_limit
  raise ArgumentError, "requires a block" unless block_given?

  Rollie.redis do |conn|
    status = inc(conn)
    unless status.exceeded?
      yield
    end
    status
  end
end