====== 使ってみる Worker編 ======
Workerは、常駐サーバー(デーモン)を作る時のフレームワークです。組み込みシステムなどにおいて起動時に常駐し、機器制御などを行うことを想定して設計しています。
ここでは、一秒ごとにランダム値をログに書き出すだけの機能をもったアプリケーションを作ります。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require "al_worker"
require "al_worker_timer"
class Worker1 < AlWorker
def initialize2() # 注意 initializeではなく、...2です。
@timer = Timer.periodic( 1 ) # every 1 sec.
@timer.run() {
log( "Random value #{rand(100)}" )
}
end
end
worker1 = Worker1.new()
worker1.daemon()
必要なファイルをrequireし、AlWorkerクラスを継承してアプリケーションを作ります。
===== 起動 =====
Aloneのライブラリをrequireできるように、-Iオプションでlib位置を指定して起動します。
ruby -Ilib server.rb
実行してもすぐコマンドに帰ってきたと思います。これで常駐して処理を続けています。psコマンドなどで確認してみましょう。
ps ax | grep [r]uby
tail -F /tmp/al_worker.log
===== 終了 =====
終了は、プロセスにシグナルを送る一般的な方法です。デフォルトで、pidファイルができていますので、それを利用します。
kill `cat /tmp/al_worker.pid`
さらに詳しくは、[[alworker:start]]の項をご覧ください。