Cron Job Not Working in Whenever Gem

Cron job not working in Whenever gem

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

Rails whenever gem not working

whenever actually does not automatically run that job for you. It is just an easy way for you to create corresponding cronjob on your system. You need to run the following command on your project to update your crontab

whenever -i

Regards

Rails 5: Cron jobs using Whenever not running

In your schedule.rb file, your environment is set to development and in the response of crontab -l command the environment is set to production,
You can set the environment like this,

set :environment, "development"
set :output, {:error => "log/cron_error_log.log", :standard => "log/cron_log.log"}

every 1.minute do
rake "check_price:check_now"
end

Rails Whenever gem not executing repetitive crontab task with Ubuntu and Docker Compose

  1. you can run cron to start cron service (linux) in your entrypoint.sh
# Update crontab file using whenever command.
cron && bundle exec whenever --set 'environment=production' --update-crontab

  1. schedule don't know the gems path so the Bundler::GemNotFound error be throw, to solve this, you can avoid missing paths by setting all ENV in schedule.rb
set :output, "log/cron_log.log"
ENV.each { |k, v| env(k, v) }
# ...


Related Topics



Leave a reply



Submit