class WaitUntil::Operation

Public Class Methods

new(args) click to toggle source
# File lib/wait_until/operation.rb, line 5
def initialize(args)
  @timeout_in_seconds = args[:timeout_in_seconds] || ::WaitUntil::Wait.default_timeout_in_seconds
  @description        = args[:description]
  @failure_message    = args[:failure_message]
  @on_failure         = args[:on_failure]
end

Public Instance Methods

eventually_true?(&block) click to toggle source
# File lib/wait_until/operation.rb, line 12
def eventually_true?(&block)
  @start_time = Time.now
  loop do
    return true if true?(&block)
    return false if timed_out?
  end
end
failure_message() click to toggle source
# File lib/wait_until/operation.rb, line 20
def failure_message
  message = @failure_message
  message ||= "Timed-out waiting until '#{@description}'"  if @description
  message ||= "Timed-out waiting until operation completed"
  message << "\nLast observed exception: #{@last_error}" if @last_error
  message
end

Private Instance Methods

timed_out?() click to toggle source
# File lib/wait_until/operation.rb, line 37
def timed_out?
  elapsed_time = Time.now - @start_time
  is_timed_out = elapsed_time >= @timeout_in_seconds
  @on_failure.call if @on_failure && is_timed_out
  is_timed_out
end
true?(&block) click to toggle source
# File lib/wait_until/operation.rb, line 30
def true?(&block)
  !!block.call
rescue StandardError => error
  @last_error = error
  false
end