ユーザ用ツール

サイト用ツール


alworker:基本機能

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

alworker:基本機能 [2014/01/08 14:09] (現在)
ライン 1: ライン 1:
 +====== AlWorker 基本機能 ======
 +
 +デーモンを作る場合の最もシンプルなコードサンプル。
 +
 +<file ruby base.rb>
 +#​!/​usr/​bin/​env ruby
 +
 +require "​al_worker"​
 +
 +class Worker1 < AlWorker
 +end
 +
 +worker1 = Worker1.new()
 +worker1.daemon()
 +</​file>​
 +
 +===== 解説 ====
 +スーパークラス AlWorkerをextendして、そこへ機能を実装します。\\
 +コマンドラインから実行すると、すぐ終了したかのように見えますが、プログラムは常駐しています。
 +内部的な「識別名」を持っており、デフォルトで「al_worker」となります。
 +
 +<​code>​
 +$ruby -I . base.rb
 +$ps ax | grep ruby
 +82918  ??  Is     ​0:​00.00 ruby -I . base.rb (ruby19)
 +$_
 +</​code>​
 +
 +同じ識別名を持ったプログラムの二重起動を阻止しますので、もう一度起動しようとすると、エラーになります。
 +
 +<​code>​
 +$ruby -I . base.rb
 +ERROR: Still work.
 +$_
 +</​code>​
 +
 +/tmp 以下にpidファイルとログファイルが作成されます。この時ファイル名として、識別名 "​al_worker"​が使われます。
 +
 +<​code>​
 +$ ls /tmp
 +al_worker.log
 +al_worker.pid
 +$_
 +</​code>​
 +
 +プロセスの終了は、kill シグナルによって行います。
 +
 +<​code>​
 +$ kill `cat /​tmp/​al_worker.pid`
 +$ps ax | grep ruby
 +$_
 +</​code>​
 +
 +====== 識別名の指定 ======
 +
 +AlWorkerのコンストラクタに文字列を渡すことで、任意の識別名をつけることができます。
 +
 +<code ruby>
 +worker1 = Worker1.new( "​ANY_NAME"​ )
 +</​code>​
 +
 +または、
 +<code ruby>
 +class Worker1 < AlWorker
 +  def initialize()
 +    super( "​ANY_NAME"​ )
 +  end
 +end
 +</​code>​
 +
 +
 +====== イニシャライザ ======
 +
 +初期化処理にコンストラクタ(initializeメソッド)を使うこともできますが、ログが記録できない、エラー処理が弱いなど、使いにくい面があるので、イニシャライザを用意しました。\\
 +initialize2()というメソッドを定義すると、コンストラクタに続いて呼ばれます。\\
 +コンストラクタをオーバライドする場合と違い、親をsuperで呼び出す必要はありません。\\
 +コンストラクタは常駐前に、イニシャライザは常駐後に呼び出されるという違いがあります。\\
 +
 +<code ruby>
 +  def initialize2()
 +    # any initialize code
 +  end
 +</​code>​
 +  ​
 +
 +====== 常駐の必要が無い場合 ======
 +
 +フォアグラウンドで動作し、常駐の必要が無い場合は、daemonメソッドを run メソッドに変更します。
 +
 +<code ruby>
 +worker1 = Worker1.new()
 +worker1.run()
 +</​code>​
 +
 +====== 基本的なオプションの解析 ======
 +
 +parse_option() を使うと、よく使われる起動オプションを解析し、動作に反映します。\\
 +
 +<code ruby>
 +worker1 = Worker1.new()
 +worker1.parse_option()
 +worker1.daemon()
 +</​code>​
 +
 +^オプション^動作^
 +|-p <​pidfile>​|PIDファイルの指定|
 +|-l <​logfile>​|ログファイルの指定|
 +|-d|デバグモード。daemonにならずフォアグラウンド実行される。|
 +
  
alworker/基本機能.txt · 最終更新: 2014/01/08 14:09 by hirohito