Project

respawn

0.0
No release in over 3 years
Yet another way to retry some block of code in Ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 0.15
~> 3

Runtime

 Project Readme

Respawn

Yet another gem to retry failed operations.

Documentation is not yet available, as the API is not yet stable.

Basic usage based on specs:

Exception based retry

Respawn::Try.call(:net, onfail: :raise) do
  Faraday.get("https://example.com")
end

Use custom predicate logic to determine if a retry is needed.

http_response = Data.define(:status, :body)

responses = [
  http_response.new(500, "error"),
  http_response.new(200, "error"),
  http_response.new(500, "error"),
  http_response.new(201, "created"),
]

predicates = [
  proc { it.status >= 500 },
  proc { it.body == "error" },
]

result =
  Respawn::Try.call(onfail: :handler, predicate: predicats) do |handler|
    handler.define do |exception|
      "This failed due to #{exception.class}"
    end

    responses[handler.retry_number]
  end

expect(result).to eq http_response.new(201, "created")