Ruby: #wait_while
# Public: Wait while block returns false by repeatedly
# calling the block until it returns true.
#
# Useful to wait for external systems to do something.
# Like launching daemons in integration tests. Which
# you're not actually doing right? >_<
#
# timeout - Integer specifying how many seconds
# to wait for.
# retry_interval - Interval in seconds between
# calling block while it's
# returning false.
# block - A block which returns true or false.
# It should only return true when
# there no need to wait any more.
#
# Returns false if timeout reached before block returned
# true, otherwise it returns true.
def wait_while(timeout = 2, retry_interval = 0.1, &block)
start = Time.now
while (result = !!block.call)
break if (Time.now - start).to_i >= timeout
sleep(retry_interval)
end
!result
end
Written by Jim Myhrberg
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#