Whenever: Don't forget leading zeros for hours!

Updated . Posted . Visible to the public. Repeats.

Whenever is a Ruby gem that provides a nicer syntax for writing and deploying cron jobs.

Leading zeros are important for whenever if you use the 24-hours format!

This schedule.rb:

every 1.day, at: '3:00', roles: [:primary_cron] do
  runner 'Scheduler.delay.do_things'
end

will lead to this crontab entry (crontab -l) with the default configuration:

0 15 * * * /bin/bash -l -c 'cd /var/www/my-project/releases/20180607182518 && bin/rails runner -e production '\''Scheduler.delay.do_things'\'''

Which would run on 3pm instead of 3am.

Using the leading zero will lead to the expected behaviour:

schedule.rb

every 1.day, at: '03:00', roles: [:primary_cron] do
  runner 'Scheduler.delay.do_things'
end

crontab -l:

0 3 * * * /bin/bash -l -c 'cd /var/www/my-project/releases/20180608095252 && bin/rails runner -e staging '\''Scheduler.delay.do_things'\'''

The reason for the described behavior is that the underlying datetime parsing gem "chronic" defaults to a 12 hour clock Show archive.org snapshot . You could configure it to a 24 hour clock Show archive.org snapshot to stop worrying about leading zeros:

set :chronic_options, hours24: true

Another interesting chronic option is "week_start", which defaults to :sunday.

Profile picture of Judith Roth
Judith Roth
Last edit
Michael Leimstädtner
License
Source code in this card is licensed under the MIT License.
Posted by Judith Roth to makandra dev (2018-06-08 10:01)