Насколько я понимаю вы просто пытаетесь установить временной лимит на запрос к бд. В конфиге Rails можно установить таймаут в 30 секунд :) Смотрите
здесь . Еще можно будет поймать исключение по таймауту и отрендерить код ошибки и сообщение. Не вижу особого смысла в создании треда. Кстати, еще посмотрите на то как работает ActiveRecord и ее
пул, она очень многие штуки умеет делать в том числе с участием потоков.
Да, еще webrick однопоточный парень и лучше его не мучайте, для разработки установите thin.
P.S. Я попробовал немного переписать ваш метод и запустить без рельс - все работает, и в целом логично :)