Railsプラグインwheneverでcronを時間帯で指定して実行するための設定方法

メールを送信するようなcronを実行する場合、携帯メールで登録しているユーザーや携帯メールへPCメールを転送しているようなユーザーを考慮して、深夜の時間帯を避けて実行する必要がある。

そこでwheneverで深夜の時間帯を避ける設定する方法について。
※wheneverの導入についてはRailsでCronを簡単にするプラグインwheneverを参照。

Googleグループでこれについて質問したところ、作者はまだ時間帯指定はできないという回答だったが、別のユーザーが設定ファイルもRubyなんだから、こんな感じでやればいろいろ設定できんじゃね?と回答してもらった。

元のスレッドHow to specify a time range for cron jobs that does not include midnight?

たとえば毎日10〜22時の時間帯に10分おき(=毎時10分、20分、30分、40分、50分)に実行する場合のschedule.rbを以下のように記述
every 1.days, :at => ('10'..'22').to_a.collect {|x| ["#{x}:00","#{x}:10","#{x}:20","#{x}:30","#{x}:40","#{x}:50"]}.flatten do
  runner "Message.send_notice_mails"
end

作成されたcrontab
crontab -l
0,10,20,30,40,50 10,11,12,13,14,15,16,17,18,19,20,21,22 * * * /rails_apps/script/runner -e production "Message.send_notice_mails"

every 10.minutesみたいに書けない部分があるので、若干複雑にはなるが細かく指定が可能になる。
posted by digital-squad at 2010年05月05日 17時58分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/148831533
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック