This is pretty much a no-brainer, but in case you’re in doubt, this is an easy way to retry external connections. This way you don’t automatically halt the application at the slightest network issues.
I’m using Peakium as an example of API connection, but you can do this with pretty much anything as long as you rescue from the right exception type (should only be in case there is connectivity issue).
# models/concerns/peakium_retry.rb
module PeakiumRetry
def peakium_retry(&block)
retries = 1
begin
block.call
rescue Peakium::APIConnectionError => e
raise e if retries == 0
retries -= 1
sleep 0.5
retry
end
end
end
This will retry the connection one time if failing (waiting half a second between tries), and throw the exception if it fails again.
You will just do the call like this:
events = peakium_retry do
Peakium::Event.all(params, peakium_access_token).data
end
Straight forward, and easy.