Method: Wait#initialize

Defined in:
lib/wait.rb

#initialize(options = {}) ⇒ Wait

Creates a new Wait instance.

Basic Options

:attempts

Number of times to attempt the block. Default is 5.

:timeout

Seconds until the block times out. Default is 15.

:delay

Seconds to delay in between attempts. Default is 1.

:rescue

One or an array of exceptions to rescue. Default is nil.

:debug

If true, debug logging is enabled. Default is false.

Advanced Options

:logger

Ruby logger used. Default is Wait::BaseLogger.

:counter

Strategy used to count attempts. Default is Wait::BaseCounter.

:delayer

Strategy used to delay in between attempts. Default is Wait::RegularDelayer.

:rescuer

Strategy used to rescue exceptions. Default is Wait::BaseRescuer.

:tester

Strategy used to test the result. Default is Wait::TruthyTester.

:raiser

Strategy used to raise specific exceptions. Default is Wait::SignalRaiser.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/wait.rb', line 48

def initialize(options = {})
  # Assign defaults.
  debug      = options[:debug]    || false
  @logger    = options[:logger]   || (debug ? DebugLogger : DEFAULT[:logger]).new
  attempts   = options[:attempts] || DEFAULT[:attempts]
  @counter   = options[:counter]  || DEFAULT[:counter].new(attempts)
  @timeout   = options[:timeout]  || DEFAULT[:timeout]
  delay      = options[:delay]    || DEFAULT[:delay]
  @delayer   = options[:delayer]  || DEFAULT[:delayer].new(delay)
  exceptions = options[:rescue]
  @rescuer   = options[:rescuer]  || DEFAULT[:rescuer].new(exceptions)
  @tester    = options[:tester]   || DEFAULT[:tester].new
  @raiser    = options[:raiser]   || DEFAULT[:raiser].new

  # Assign the logger to each of the strategies.
  [@counter, @delayer, @rescuer, @tester, @raiser].each do |strategy|
    strategy.logger = @logger if strategy.respond_to?(:logger=)
  end
end