2011-06-23 18 views
10

Tôi đã tìm kiếm tất cả qua internet cho điều này và tài liệu không thực sự nói về công việc hàng tháng cụ thể. Vì vậy, tôi đã hy vọng rằng ai đó ở đây có thể cho tôi biết làm thế nào để làm điều này.Rails bất cứ khi nào đá quý: mỗi tháng vào ngày

Tôi đã cài đặt đá quý bất cứ khi nào và tất cả những gì cần biết là đúng cú pháp cho việc này:

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

Hope ai đó có thể chỉ cho tôi đi đúng hướng ..

Cảm ơn!

Trả lời

8

Bất cứ khi nào không hỗ trợ một tùy chọn :on như xa như tôi biết, nhưng bạn sẽ có thể làm

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

Các '0 2 20 * *' chỉ đơn giản là cú pháp cron liên quan - xem http://www.manpagez.com/man/5/crontab/

+0

Quá xấu không có một giải pháp có thể đọc được, nhưng nó sẽ làm. Cảm ơn! –

31

Bạn cũng có thể sử dụng cú pháp cron thô nếu bạn không biết cách sử dụng cú pháp ruby.

gì bạn muốn sẽ giống như sau:

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

Đây là một cheatseet nhanh về cách sử dụng cú pháp 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) 

shamelessly bị đánh cắp từ: http://adminschoice.com/crontab-quick-reference

+0

không nên là – Kush

15

Nếu bạn muốn nó nhiều hơn có thể đọc được, bạn cũng có thể phân tích cú pháp một ngày trong văn bản.

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

Điều này cũng sẽ tạo ra 0 2 20 * *.

+0

Có vẻ tốt! Cảm ơn bạn đã chia sẻ .. –

4

Thậm chí tốt hơn:

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

Sẽ thật tuyệt nếu tôi cần ngày đầu tiên của tháng, tôi cần cú pháp thứ 20, đẹp. –

Các vấn đề liên quan