Вы не можете вызвать удаленную функцию со своего сервера, если она не отвечает на запрос, поэтому необходимо будет часто отправлять запросы на ваш сервер из вашего приложения, проверять ход поиска и отвечать соответствующим образом. Если вы не говорите более 10 секунд, я бы действительно выбрал спиннер, так как он будет намного проще и интуитивнее.
Edit:
примеры того, как вы можете обновить свою страницу в ответ на опрос ajax
#some_controller.rb
def check_download_progress
#some_method
end
# javascript erb file. views/some_controller/check_download_progress.js.erb
# You can mix js and ruby and send it as a response to an ajax call; examples:
#check_download_progress.js.erb
<%- if @some_value.present? -%>
$('#progress_bar').addClass('<%= @some_value -%>');
<%- end -%>
#or simply call a function
my_remote_function(<%= @some_value -%>);