Cron job not working in Whenever gem

你离开我真会死。 提交于 2019-11-26 19:02:55

问题


I have an application that contains a bunch of tasks, and every day I want to run a cron job that creates a DayTask for each Task in the database. A Task has_many DayTasks and these daytasks are what users will be checking off every day. I'm using the whenever gem but it doesn't seem to be running at all. Any ideas?

config/schedule.rb

every 1.day, :at => "12:01am" do
  runner "Task.generate_tasks_for_day"  
end

Task.rb

  def generate_tasks_for_day
    Task.all.each do |task|
      task.day_tasks.create(:target_date => Date.today)
    end 
  end 

result of running the 'whenever command'

1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '\''Task.generate_tasks_for_day'\'''

Note: I've been changing the times in config/schedule.rb every time I want to test run it.


回答1:


Finally I have solved how to run the gem Whenever. It's working good on production, but not in development mode (I think that to working good in dev mode you must do some tricks).

Then, these are the processes to do:

  1. install the gem
  2. write your scheduler.rb file
  3. push to the remote server
  4. login to the remote server (for example with ssh)
  5. see if whenever is good uploaded by running in terminal: whenever
  6. update whenever crontab by running: whenever --update-crontab
  7. restart the server crontab (for example in Ubuntu server): sudo service cron restart
  8. check if crontab is good implemented on the server: crontab -l

That's it!

Personally, I prefer to set up my crons directly from the server:

  1. Edit the crontab: crontab -e
  2. Append my cron (e.g. every day at 5:00 AM - can be little different for not-Linux-based server):
    0 5 * * * /bin/bash -l -c 'cd /path_to_my_app/current && RAILS_ENV=production bundle exec rake my_cron_rake'
  3. Check if good implemented: crontab -l
  4. Done



回答2:


You have to actually register the job with the crontab by running:

whenever --update-crontab

Also if you're trying to get jobs running locally, add :environment => "development" to your task

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




回答3:


Try to execute the whenever generated command directly from terminal or add the following line MAILTO=your@emailadress.com to your crontab.



来源:https://stackoverflow.com/questions/7548730/cron-job-not-working-in-whenever-gem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!