class Greenjaguar::PolicyBuilder

Attributes

count[RW]
exceptions[RW]
logger[RW]
timeout[RW]
wait_strategy[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 5
def initialize(&block)
  @count = 1
  @timeout = 300
  @exceptions = []
  instance_eval(&block)
end

Public Instance Methods

fail_silently() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 27
def fail_silently
  @fail_silently = true
end
fail_silently?() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 31
def fail_silently?
  @fail_silently
end
measure_time_in(time_unit) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 43
def measure_time_in(time_unit)
  strategy.time_unit = time_unit
  self
end
never_give_up() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 35
def never_give_up
  @count = -1
end
never_give_up?() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 39
def never_give_up?
  @count == -1
end
only_on_exceptions(exception_array) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 53
def only_on_exceptions(exception_array)
  @exceptions.concat exception_array
end
strategy() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 70
def strategy
  @strategy ||= init_wait_strategy(:default)
end
timeout_after(retry_timeout) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 17
def timeout_after(retry_timeout)
  @timeout = retry_timeout
  self
end
times(retry_count) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 12
def times(retry_count)
  @count = retry_count
  self
end
valid_exception?(exception) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 57
def valid_exception?(exception)
  if @exceptions.empty?
    return true
  else
    @exceptions.each {|ex| return true if exception.class <= ex}
  end
  false
end
wait() click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 66
def wait
  strategy.wait
end
with_strategy(wait_strategy, *args) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 48
def with_strategy(wait_strategy, *args)
  @strategy = init_wait_strategy(wait_strategy, *args)
  self
end

Private Instance Methods

init_wait_strategy(wait_strategy, *args) click to toggle source
# File lib/greenjaguar/policy_builder.rb, line 76
def init_wait_strategy(wait_strategy, *args)
  case wait_strategy
    when :fibonacci
      return Greenjaguar::Strategies::FibonacciStrategy.new
    when :exponential_backoff
      return Greenjaguar::Strategies::ExponentialBackoffStrategy.new
    when :random
      return Greenjaguar::Strategies::RandomStrategy.new
    when :fixed_interval
      return Greenjaguar::Strategies::FixedIntervalStrategy.new(*args)
    else
      return Greenjaguar::Strategies::DefaultWaitStrategy.new
  end
end