Cron работа не работает в Whenever gem
у меня есть приложение, которое содержит кучу задач, и каждый день я хочу запустить задание cron, которое создает DayTask для каждой задачи в базе данных. Задача has_many DayTasks и эти daytasks-это то, что пользователи будут проверять каждый день. Я использую всякий раз, когда камень, но он, похоже, не работает вообще. Есть идеи?
конфигурация/расписание.rb
every 1.day, :at => "12:01am" do
runner "Task.generate_tasks_for_day"
end
задач.rb
def generate_tasks_for_day
Task.all.each do |task|
task.day_tasks.create(:target_date => Date.today)
end
end
результат запуска " всякий раз, когда команда'
1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '''Task.generate_tasks_for_day''''
Примечание: я менял время в config / schedule.rb каждый раз, когда я хочу протестировать его.
3 ответов
наконец, я решил, как запустить камень всякий раз. Он хорошо работает на производстве, но не в режиме разработки (я думаю, что для хорошей работы в режиме dev вы должны сделать некоторые трюки).
затем, это процессы, которые нужно сделать:
- установить
- написать свой
- нажмите на удаленный сервер
- вход на удаленный сервер (например с
ssh
) - видишь ли, когда загружено running in terminal:
whenever
- обновление всякий раз, когда crontab, запустив:
whenever --update-crontab
- перезапустите crontab сервера (например, в Ubuntu server):
sudo service cron restart
- проверьте, хорошо ли crontab реализован на сервере:
crontab -l
вот именно!
лично я предпочитаю настраивать своих Кронов непосредственно с сервера:
- изменить crontab:
crontab -e
- добавить мой cron (например каждый день в 5: 00 утра-может быть немного по-другому для не-Linux-сервера):
0 5 * * * /bin/bash -l -c 'cd /path_to_my_app/current && RAILS_ENV=production bundle exec rake my_cron_rake'
- проверьте, хорошо ли реализовано:
crontab -l
- сделал
вы должны фактически зарегистрировать задание в crontab, выполнив:
whenever --update-crontab
также, если вы пытаетесь получить задания, работающие локально, добавьте
:environment => "development"
ваши задачи
runner "MyTask.some_action", :environment => "development"
попробуйте выполнить команду whenever generated непосредственно из терминала или добавьте следующую строку
MAILTO=your@emailadress.com
к вашему crontab.