Всякий раз, когда драгоценный камень Cronjob в определенное время на основе модели - PullRequest
0 голосов
/ 23 мая 2018

Я использую драгоценный камень всякий раз, когда выполняю свои задания cron.У меня есть приложение, посвященное событиям и бронированиям, где у меня есть события и таблица заказов.

Я хочу отправить почтовую рассылку со всеми бронированиями для мероприятия организатору мероприятия за час или около того до события.начальное время.Но я не могу найти способ с этим когда-либо драгоценным камнем.

В настоящее время я просто отправляю все почтовые программы в 21:00, и это отлично работает, но я не удовлетворяю этому случаю, поскольку это требуется разным организаторам событий в разное время

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

@ Лео ответил правильно, но добавление require File.expand_path(File.dirname(__FILE__) + "/environment") в начале вашего schedule.rb сделает его более универсальным и легким для чтения.

0 голосов
/ 23 мая 2018

Существует способ запустить whenever динамически.Просто добавьте эту строку в начало вашего schedule.rb:

require "/home/username/appname/config/environment.rb"

, что позволит вам использовать все ваши классы моделей в schedule.rb.Например:

every 1.day, :at => (Booking.last.event_time - 1.hour).strftime('%I:%M %p') do
  ...
end

Кроме того, вы также можете использовать переменную окружения для установки времени.

Не забудьте обновить crontab при изменении времени:

system 'bundle exec whenever --update-crontab'

Но cron использует для запуска заданий по расписанию (команд или сценариев оболочки) периодически в фиксированное время.Так что, когда это не лучшее решение для вас.Как написал iGian в своем комментарии, отметьте эту тему : отложенная работа (sidekiq или аналогичная) больше относится к этой работе.

...