Module: Webspicy::Support
- Defined in:
- lib/webspicy/support.rb,
lib/webspicy/support/hooks.rb,
lib/webspicy/support/world.rb,
lib/webspicy/support/colorize.rb,
lib/webspicy/support/deep_merge.rb,
lib/webspicy/support/data_object.rb,
lib/webspicy/support/status_range.rb
Defined Under Namespace
Modules: Colorize, DataObject, Hooks
Classes: DeepMerge, StatusRange, World
Constant Summary
collapse
- SORL_OPTS =
{ max: 5, wait: 0.05, raise: false }
Class Method Summary
collapse
Class Method Details
._sooner_or_later(&bl) ⇒ Object
21
22
23
24
25
|
# File 'lib/webspicy/support.rb', line 21
def _sooner_or_later(&bl)
bl.call
rescue Tester::Failure => ex
ex
end
|
.sooner_or_later(opts = nil, &bl) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/webspicy/support.rb', line 6
def sooner_or_later(opts = nil, &bl)
opts = SORL_OPTS.merge(opts || {})
left, wait_ms = opts[:max], opts[:wait]
r = _sooner_or_later(&bl)
until (r && !r.is_a?(Tester::Failure)) || left == 0
sleep(wait_ms)
wait_ms, left = wait_ms*2, left - 1
r = _sooner_or_later(&bl)
end
raise r if r.is_a?(Tester::Failure)
raise TimeoutError, "Timeout on sooner-or-later" if r.nil? && opts[:raise]
r
end
|