class Saddle::Middleware::RubyTimeout

Public: Enforces a ruby timeout on the request and throws one consistent exception for all classes of timeout, internal or from faraday. :timeout must be present in the request or client options

Public Instance Methods

call(env) click to toggle source
# File lib/saddle/middleware/ruby_timeout.rb, line 15
def call(env)
  timeout = env[:saddle][:hard_timeout] # nil or 0 means no timeout
  Timeout.timeout(timeout, Saddle::TimeoutError) do
    @app.call(env)
  end
# It is possible that faraday will catch the timeout first and throw
# this exception, rethrow as a class derived from standard error.
rescue Faraday::TimeoutError
  raise Saddle::TimeoutError
end