无论何时宝石:每个月20日

Tim*_*aas 14 ruby-on-rails whenever

我在互联网上搜索了这个,文档并没有真正谈论具体的月度工作.所以我希望有人可以告诉我该怎么做.

我已经安装了随时随地的宝石,我需要知道的是正确的语法:

every :month, :on => '20th', :at => '02:00' do
  runner "Mailer.send_friend_sheet"
end
Run Code Online (Sandbox Code Playgroud)

希望有人能指出我正确的方向..

谢谢!

dom*_*esz 34

如果你无法弄清楚如何使用ruby语法,你也可以使用原始cron语法.

你想要的将是什么样子:

every '0 2 20 * *' do
  command "echo 'you can use raw cron syntax too'"
end
Run Code Online (Sandbox Code Playgroud)

这是一个如何使用cron语法的快速备忘单

*     *     *   *    *        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)
Run Code Online (Sandbox Code Playgroud)

从以下网站无耻地窃取:http://adminschoice.com/crontab-quick-reference


Mic*_*per 20

如果您希望它更具可读性,您也可以只解析文本中的日期.

every 1.month, :at => 'January 20th 2:00am' do
  runner "Mailer.send_friend_sheet"
end
Run Code Online (Sandbox Code Playgroud)

这也会产生0 2 20 * *.


Jak*_*b S 11

:on据我所知,每当不支持选项时,你应该能够做到

every '0 2 20 * *' do
  runner "Mailer.send_friend_sheet"
end
Run Code Online (Sandbox Code Playgroud)

'0 2 20**'只是相关的cron语法 - 请参阅http://www.manpagez.com/man/5/crontab/


cap*_*013 8

更好的是:

every 1.month, at: 'start of the month at 2am' do
  runner "Mailer.send_friend_sheet"
end
Run Code Online (Sandbox Code Playgroud)