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 вы должны сделать некоторые трюки).

затем, это процессы, которые нужно сделать:

  1. установить
  2. написать свой
  3. нажмите на удаленный сервер
  4. вход на удаленный сервер (например с ssh)
  5. видишь ли, когда загружено running in terminal:whenever
  6. обновление всякий раз, когда crontab, запустив:whenever --update-crontab
  7. перезапустите crontab сервера (например, в Ubuntu server):sudo service cron restart
  8. проверьте, хорошо ли crontab реализован на сервере:crontab -l

вот именно!

лично я предпочитаю настраивать своих Кронов непосредственно с сервера:

  1. изменить crontab:crontab -e
  2. добавить мой 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'
  3. проверьте, хорошо ли реализовано:crontab -l
  4. сделал

вы должны фактически зарегистрировать задание в crontab, выполнив:

whenever --update-crontab

также, если вы пытаетесь получить задания, работающие локально, добавьте :environment => "development" ваши задачи

runner "MyTask.some_action", :environment => "development"


попробуйте выполнить команду whenever generated непосредственно из терминала или добавьте следующую строку MAILTO=your@emailadress.com к вашему crontab.