Module: Limiter::Mixin

Defined in:
lib/limiter/mixin.rb

Instance Method Summary collapse

Instance Method Details

#limit_method(method, rate:, interval: 60) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/limiter/mixin.rb', line 5

def limit_method(method, rate:, interval: 60)
  queue = RateQueue.new(rate, interval: interval)

  mixin = Module.new do
    define_method(method) do |*args|
      queue.shift
      super(*args)
    end
  end

  prepend mixin
end