Clockwork

Clockwork

ローカルマシンで定期的にスクリプトを動かしたいときに使える。cronのようなもの。

Install

gemなのでgem install clockworkで導入。

メソッド

メソッド 概要
every 定期実行するジョブを定義する
handler ジョブ実行時に呼び出される処理を定義するメソッド
Numeric#seconds,Numeric#minutes,Numeric#hour,Numeric#day, 時間指定
configure Clockworkの初期状態に呼び出され、Clockworkのマルチスレッド/ロギング/タイムゾーンに関する設定を定義する

サンプルソース

require 'clockwork'

module Clockwork
  handler do |job|
    puts "Running #{job}"
  end

  every(10.seconds, 'frequent.job')
  every(3.minutes, 'less.frequent.job')
  every(1.hour, 'hourly.job')

  every(1.day, 'midnight.job', :at => '00:00')
end

基本

  • handlerにジョブ実行時の処理を定義する。
  • everyでジョブを定義する。
  • everyでジョブの実行タイミングを指定する際にNumeric#secounds, Numeric#minutes, Numeric#hour, Numeric#dayを使う。
  • moduke Clockworkはhandler,everyを呼びやすくするためのもので、特別な事情が泣けrばそのままで良い。

実行

フォアグランド実行

clockwork clock.rb

puts等を記述していればその処理も表示される。Ctrl+Cで終了。

バックグラウンド実行

  • フォアグランドのままではターミナルを閉じると定期実行も終了してしまうので、 clockworkd -c hoge.rb start --log
  • clockworkdコマンドを使うにはdaemonsが必要なので先に gem install daemonsしておく。
  • オプションに--logを付けてスタートすることで、コマンドを実行したカレントディレクトリにtmpフォルダが作成されログが吐かれる。
  • 終了はcloclworkd -c hoge.rb stop

参考URL