class ReeLogger::RateLimiter
def call(&block)
def call(&block) tick = Time.now.to_i @appends.push(tick) min = tick - @interval loop do if @appends.first < min @appends.shift else break end end if @appends.size < @max_rate block.call end end
def initialize(interval, max_rate)
def initialize(interval, max_rate) @max_rate = max_rate @interval = interval @appends = [] end