У меня есть приложение Rails, которое, к сожалению, после запроса контроллеру, должно выполнить хруст, который занимает некоторое время. Каковы наилучшие практики в Rails для обеспечения обратной связи или прогресса в долгосрочной задаче или запросе? Эти методы контроллера обычно продолжаются 60 секунд.
Я не заинтересован в стороне клиента... Я планировал каждый раз запрашивать Ajax-запрос и показывать индикатор прогресса. Я просто не уверен в лучшей практике Rails, я могу создать дополнительный контроллер? Есть ли что-то умное, что я могу сделать? Я хочу, чтобы ответы фокусировались на стороне сервера, используя только Rails.
Заранее благодарим за помощь.
Edit:
Если это имеет значение, http-запрос предназначен для PDF файлов. Затем у меня есть Rails в сочетании с Ruport, создающими эти PDF файлы. Проблема в том, что эти PDF файлы очень большие и содержат много данных. Имеет ли смысл использовать фоновое задание? Предположим, что средний PDF занимает от одной минуты до двух минут, не заставит ли мое приложение Rails не отвечать на любой другой запрос сервера за это время?
Изменить 2:
Хорошо, после дальнейшего расследования кажется, что мое приложение Rails действительно не отвечает на любые другие HTTP-запросы после того, как запрос поступит в большой PDF файл. Итак, я думаю, теперь вопрос становится следующим: Каков наилучший механизм многопоточности/фона? Он должен быть стабильным и поддерживаться. Я очень удивлен, что у Rails нет чего-то подобного.
Изменить 3:
Я прочитал эту страницу: http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails. Я хотел бы прочитать о различных опытах с этими инструментами.
Изменить 4:
Я использую Passage Phusion "modrails", если это имеет значение.
Изменить 5:
Я использую 64-разрядную версию Windows Vista для своей машины разработки; однако моя производственная машина Ubuntu 8.04 LTS. Должен ли я рассмотреть возможность перехода на Linux для моей машины разработки? Будут ли представленные решения работать на обоих?