Чтобы смоделировать неблокирующую часть, установите низкий read_timeout. Также будьте готовы перехватить полученную ошибку тайм-аута:
request = Net::HTTP::Get.new(url)
http = Net::HTTP.new(url.host, url.port)
http.read_timeout = 1
begin
http.request(request)
rescue Timeout::Error => e
end
Я не знаю базового механизма рельсов, который будет выполнять неблокирующий вызов и получать ответ. Rails очень сильно привязан к циклу запроса / ответа, поэтому обычно основной путь выполнения контроллера заканчивается до возврата HTTP-вызова.