RAILS: как запустить конкретную задачу на бэкэнде rails на основе записи даты и времени в БД? - PullRequest
0 голосов
/ 28 июня 2018

Я хочу отправлять пользователям поздравительные сообщения на день рождения. Я подумал реализовать это через отдельную программу, которая может работать в crontab, но я хотел бы узнать, как это возможно на ruby on rails без использования crontab job?

Ответы [ 2 ]

0 голосов
/ 01 августа 2018

Для минимальной настройки "cron-подобных" задач в "core" rails / ruby ​​я создал https://github.com/Ebbe/arask. Он не использует crond.

Добавьте gem 'arask' в ваш Gemfile, запустите bundle install, rails generate arask:install и rails db:migrate.

Теперь вы можете настроить свои задачи в файле config / initializers / arask.rb:

arask.create task: 'users:birthday_congrats', cron: '0 2 * * *' # At 02:00 every day

Задачи будут запускаться автоматически, если сервер работает.

0 голосов
/ 28 июня 2018

Вы можете использовать Ruby (и, следовательно, Rails) с гемом whenever. Это довольно просто: вы можете создать простой сценарий или задачу для проверки базы данных, и, если сегодня день рождения, отправьте почтовую программу через Rails. Затем, используя whenever, вы помещаете этот скрипт в их файл schedule.rb, говоря, что запускаете его каждый день в определенное время. Затем вы запускаете команду установки whenever -i, и она автоматически настраивает ваш crontab для запуска вашего скрипта Rails, который обращается к вашей БД. Это супер просто и использует cron, но с легкостью Ruby.

Вот пример того, как это будет выглядеть в config/schedule.rb Я использую:

every 1.day, at: '1:00am' do
  rake "task:send_letters", environment: 'production'
end

every 1.day, at: '3:45 am' do
  command "cat /dev/null > /home/deploy/cronlog.log", environment: 'production'
  runner "Billing.set_invoiced_amounts", environment: 'production'
end

После того, как вы запустите команду установки, взгляните на crontab -l, вы увидите, что все вышеперечисленное переведено в формат cron отлично, в то же время вызывая нужные среды и необходимые настройки.

Документы с драгоценными камнями в большинстве своем довольно хороши.

https://github.com/javan/whenever

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...