rescue/retry_with_ensure.rb
tests/_examples/rescue/retry_with_ensure.rb in the metorex repository.
attempts = 0
begin
attempts += 1
raise "fail" if attempts < 3
puts "body succeeded on attempt #{attempts}"
rescue
retry
ensure
puts "statement ensure after #{attempts}"
end
tries = 0
value = begin
tries += 1
raise "fail" if tries < 2
"value after #{tries}"
rescue
retry
ensure
puts "value ensure after #{tries}"
end
puts value
def fetch_with_retries
calls = 0
begin
calls += 1
raise "fail" if calls < 4
"method answered after #{calls}"
rescue
retry
ensure
puts "method ensure after #{calls}"
end
end
puts fetch_with_retries
def method_level
@calls = (@calls || 0) + 1
raise "fail" if @calls < 2
"method-level rescue answered after #{@calls}"
rescue
retry
ensure
puts "method-level ensure after #{@calls}"
end
puts method_level
Output:
body succeeded on attempt 3
statement ensure after 3
value ensure after 2
value after 2
method ensure after 4
method answered after 4
method-level ensure after 2
method-level rescue answered after 2