Почему локальный Rails Server виснет при использовании внутреннего API?
Локально скорее всего приложение запушено в один поток, т.е пока один запрос не отработает до конца, второй ожидает.
У вас получается что первый запрос создает второй запрос, и первый запрос ждет пока завершиться второй запрос.
Но второй запрос не начнет выполняться пока не завершится первый. И приложение падает по таймауту.
Запустите еще один инстанс на другом порту и с другим pid
rails s -p 3001 -P tmp/pids/server2.pid
и сообтвественно адресс будет localhost:3001/...
Или попробуйте использовать в качестве вебсервера юникорн/пассенжер или типа того.
Скорее всего, приложение не "виснет", а просто долго ожидает ответ по сети и в конце-концов получит ошибку Timeout::Error, которую надо уметь обработать.
Нужно убедиться что значение переменной query - это вообще корректный адрес http://... и что http сервис доступен по данному URL. Если этот сервис находится за пределами локальной подсети, то нужно учесть и задержки сети и объёма передаваемых данных.
Также одна из детских ошибок в приложении обращаться к самому себе, то есть рекурсивно. В таком случае приложение никогда не выйдет из рекурсии и в итоге браузер выдаст ошибку о недоступности приложения по истечении времени.