rescue/retry_in_method_rescue.rb
tests/_examples/rescue/retry_in_method_rescue.rb in the metorex repository.
def load_once(attempts)
attempts << :tried
raise ArgumentError, "first try" if attempts.size < 2
attempts
rescue ArgumentError
retry
end
p load_once([])
def load_with_condition(attempts)
attempts << :tried
raise ArgumentError, "first try" if attempts.size < 3
attempts
rescue ArgumentError
attempts.size < 3 ? retry : raise
end
p load_with_condition([])
def give_up(attempts)
attempts << :tried
raise ArgumentError, "always"
rescue ArgumentError
attempts.size < 2 ? retry : raise
end
begin
give_up([])
rescue ArgumentError => error
p error.message
end
def retry_with_if(attempts)
attempts << :tried
raise ArgumentError, "first try" if attempts.size < 2
attempts
rescue ArgumentError
retry if attempts.size < 2
end
p retry_with_if([])
Output:
[:tried, :tried]
[:tried, :tried, :tried]
"always"
[:tried, :tried]