2011-06-23 11 views
10

Przeszukałem cały ten Internet, a dokumentacja tak naprawdę nie mówi o miesięcznych ofertach pracy. Miałem więc nadzieję, że ktoś tutaj może mi powiedzieć, jak to zrobić.Szyny, gdy klejnot: co miesiąc, w dniu 20

Mam zainstalowane ilekroć gem i wszystko, co trzeba wiedzieć, to prawo do składnia to:

every :month, :on => '20th', :at => '02:00' do 
    runner "Mailer.send_friend_sheet" 
end 

nadzieję, że ktoś może wskazać mi w dobrym kierunku ..

Dzięki!

Odpowiedz

8

Ilekroć nie obsługuje opcję :on o ile mi wiadomo, ale powinieneś być w stanie zrobić

every '0 2 20 * *' do 
    runner "Mailer.send_friend_sheet" 
end 

„0 2 20 * *” jest po prostu odpowiednia składnia cron - zobacz http://www.manpagez.com/man/5/crontab/

+0

Szkoda, że ​​nie jest czytelne rozwiązanie, ale będzie to zrobić. Dzięki! –

31

Możesz również użyć składni surowej cron, jeśli nie potrafisz użyć składni ruby.

Co chcesz będzie wyglądać następująco:

every '0 2 20 * *' do 
    command "echo 'you can use raw cron sytax too'" 
end 

Oto szybki cheatseet na jak używać składni 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) 

Bezwstydnie skradzione: http://adminschoice.com/crontab-quick-reference

+0

nie powinno to być – Kush

15

Jeśli chcesz więcej czytelny możesz także po prostu sparsować datę w tekście.

every 1.month, :at => 'January 20th 2:00am' do 
    runner "Mailer.send_friend_sheet" 
end 

Spowoduje to również wygenerowanie 0 2 20 * *.

+0

Wygląda dobrze! Dzięki za udostępnienie .. –

4

Nawet lepiej:

every 1.month, at: 'start of the month at 2am' do 
    runner "Mailer.send_friend_sheet" 
end 
+0

Byłoby miło, gdybym potrzebował pierwszego dnia miesiąca, potrzebowałem dwudziestej, dobrej składni. –

Powiązane problemy