Существует способ запустить 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 или аналогичная) больше относится к этой работе.