В моем приложении Rails пользователь может загрузить файл, а затем то, что мне нужно сделать, это: когда файл загружен, я хочу запустить задачу rake, которая анализирует файл и передает все таблицы в базе данных, и в зависимости от того, насколько велик файл, это может занять некоторое время. Я предполагаю, что sth как >> система «rake task_name» в моем контроллере будет выполнять эту работу.Вызов функции рейка в веб-запросе
Однако это лучшая практика? Это безопасно? Потому что таким образом любой пользователь начнет процесс грабли. В этом Railcast они рекомендуют использовать рейк в фоновом режиме. Что было бы альтернативой или обычной практикой?
Почему бы не просто запустить задачу рейка каждые пять минут, которая проверяет наличие новых файлов и обрабатывает их по мере необходимости? Другой вариант - использовать ActiveJob или другую библиотеку фоновой обработки. – Carpetsmoker
Лучшей практикой было бы отложенное/асинхронное задание. В основном загрузка запускает Job, который обрабатывается рабочим. Я могу подумать о нескольких других способах кожи этой кошки. – omarvelous
Я пытался сделать идею Active Job. Active Job работает только с Rails 4, я использую Rails 3.2 для этого приложения. Я попробую [Задержка задания] (https://github.com/collectiveidea/delayed_job) – Jei