2013-03-17 3 views
0

Мне нужно что-то в обратном вызове для функции, которая должна быть скопирована через 5 минут после создания метода.Ruby on Rails, callback, запустите метод позже

Моя ситуация:

пользователь входит в систему в веб-страницы, загружать несколько файлов (создание-метод вызывается), в 5 мин должны файлы на их пути для анализа (в течение 5 мин он должен вызвать метод, который просто возьмет всю папку, где хранятся файлы и анализирует ее). Вот почему такие вещи, как ввод rake jobs:work или использование gem daemons и ввод "RAILS_ENV=production script/delayed_job start" в командной строке меня не устраивает.

Я хочу начать как обычно с рельсов s, войти в систему, загрузить файлы, и она должна автоматически работать, чтобы файлы анализировались.
Как я понял один раз the jobs started они будут продолжать работать? Мне это не нужно. Мне нужно, чтобы некоторые методы запускались через 5 минут после создания метода.
Все это с gem 'delayed_job_active_record', чтобы выполнить задания, и daemons, чтобы начать работу, кажется, слишком сложно для такой легкой задачи.

Итак, можно ли использовать gem 'delayed_job_active_record' и gem daemons для запуска моего приложения с помощью рельсов s, и все будет выполняться автоматически в фоновом режиме без остановки приложения и ввода данных в commanline для запуска отложенных заданий? Или можно обойтись без всего этого сложного?

Я уже спросил о задержанных_jobs here и here.

Большое спасибо заранее.

ответ

-1

Вот пост, где описывается how to set up scheduling with delayedjob
Обновление 2015-07-06: ссылка сломана, и я не могу найти кэшированные версии - см обновление ниже

Если вы можете, я рекомендую смотреть в sidekiq, который является отличной очередью сообщений и даже имеет встроенное планирование. Однако он использует redis, поэтому, если у вас уже нет redis, это будет небольшая работа.

Update
Here is a gist с помощью простого решения плановых и повторяющихся заданий с delayedjob

+0

Кажется, что мне нужно использовать только отложенной :: Job.enqueue (MeetingReminderJob.new (пользователь),: run_at => time_run), потому что у меня нет отложенных/напоминающих изменений и всего там – Tonja