When making requests using the http gem you might want to automatically follow redirects to get the desired response. This is supported but not the default behavior.
You can do so by using the .follow method.
This follows redirects for the following status codes: 300, 301, 302, 303, 307, 308
response = HTTP.get('https://www.example.com/redirect')
response.status # => 302
response.uri.to_s # => "https://www.example.com/redirect"
response = HTTP.follow.get('https://www.example.com/redirect')
response.status # => 200
response.uri.to_s # => "https://www.example.com/this-is-where-i-actually-want-to-be"
Limiting maximum amount of redirects
The .follow method also allows setting a maximum allowed amount of hops by settings the :max_hops option.The default is 5.
curl for example
uses 30 as the default
Show archive.org snapshot
.
# would raise an error if there are more than 3 redirects
response = HTTP.follow(max_hops: 3).get('https://www.example.com/redirect')
Endless redirect loops
These are automatically checked for and an error will be raised if this occurs.
For more information see the httprb docs Show archive.org snapshot .
Posted by Maximilian Berger to makandra dev (2024-05-13 09:17)