class Message::Filters::RetryOnError

Attributes

on[RW]
sleep[RW]
tries[RW]

Public Class Methods

new() click to toggle source
# File lib/message/filters/retry_on_error.rb, line 5
def initialize
  @tries = 3
  @on = StandardError
  @sleep = 0.001
end

Public Instance Methods

call(filter, _, _) click to toggle source
# File lib/message/filters/retry_on_error.rb, line 11
def call(filter, _, _)
  lambda do |arg|
    @try = 0
    begin
      filter.call(arg)
    rescue self.on => e
      @try += 1
      if @try < self.tries
        Kernel.sleep self.sleep.to_f
        retry
      end
      raise
    end
  end
end