Rails whenever gem: each month on the 20th
I searched all over the internet for this, and the documentation isn't really talking about monthly jobs in specific. So I was hoping that someone here could tell me how to do this.
I've installed the whenever gem and all I need to know is开发者_如何学Go the right syntax for this:
every :month, :on => '20th', :at => '02:00' do
runner "Mailer.send_friend_sheet"
end
Hope someone can point me in the right direction..
Thanks!
You can use raw cron syntax as well if you cant figure out how to use with ruby syntax.
What you want will look like:
every '0 2 20 * *' do
command "echo 'you can use raw cron syntax too'"
end
Here is a quick cheatsheet for how to use cron syntax
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Shamelessly stolen from: http://adminschoice.com/crontab-quick-reference
If you want it more readable you can also just parse a date in text.
every 1.month, :at => 'January 20th 2:00am' do
runner "Mailer.send_friend_sheet"
end
This will generate 0 2 20 * *
as well.
Whenever doesn't support an :on
option as far as I am aware, but you should be able to do
every '0 2 20 * *' do
runner "Mailer.send_friend_sheet"
end
The '0 2 20 * *' is simply the relevant cron syntax - see http://www.manpagez.com/man/5/crontab/
Even better:
every 1.month, at: 'start of the month at 2am' do
runner "Mailer.send_friend_sheet"
end
精彩评论