[トップ] [更新履歴] [著書] [コンピュータ] [ゲーム] [CGI配布]


Index


Title: belld - Bell Board System

簡単なサーバ&クライアントベースなイベント通知プログラムです。 サーバ側のコンソールが「黒板」の役目を果たし、クライアントをどこから起動してもそこにログが書かれます。 黒板と同時にログファイルにもログが書かれるので過去のログ(~/.belld/yymmdd)を閲覧することも可能です。 クライアントはコマンドラインから起動できるだけでなく、Rubyライブラリとしても使用可能なので特にCGIプログラムのデバッグに威力を発揮します。 ログファイルをtail -fしたようなものだと思ってください。

1 必要なもの

2 推奨環境

3 ダウンロード

[RAA:belld]

4 インストール

  1. 必要があればbelld-uri.rbとdrbacl.rbを書き換えます。 適切に設定するとリモートホストのイベントも通知できます。 その際、セキュリティには注意しましょう。
  2. ruby setup.rb config; ruby setup.rb setup
  3. ruby setup.rb install

5 サーバを起動

dRubyベースなのでまずサーバを立ち上げないといけない。 サーバのコンソールにクライアントからのイベントログが書かれます。

$ belld.rb

6 クライアントを起動

クライアントはコマンドラインから起動することもできれば、Rubyライブラリとしても使用可能です。

6.1 コマンドラインから起動

クライアントを起動するとベルを鳴らしてログを書き込みます。 オプションを指定しない場合は標準入力の内容を黒板に表示します。 黒板に表示する内容を引数に指定したいときは「-s」オプションを使いましょう。

$ echo log | bell.rb
$ bell.rb -s log

ベルを抑制するときは「-q」オプションを使いましょう。

$ bell.rb -q -s silent

6.2 ライブラリとして使用(関数形式)

ライブラリとして使用することもできます。

require 'bell'

でクライアントライブラリを読み込むと、次のメソッドが定義されます。

bell_message( str = "" )

ベルを鳴らしてstrを黒板に書く。

message( str = "" )

ベルを鳴らさないでstrを黒板に書く。

6.3 ライブラリとして使用(IO互換)

グローバル変数$bellにはBellIOオブジェクトが格納されていて、IOクラスの代わりとして使えます。 $bellに出力系のメソッドを送ると、黒板に出力されます。 ただし、ベルは鳴りません。 使えるメソッドは今のところ、>>、print、puts、printfです。

require 'stringio'
$nullout = StringIO.new

def f(debugout=$nullout)
  debugout.puts "debug!"
  # 何かをする
end

ここで、

f

と引数なしで起動するとメッセージは表示されません。(NullObjectパターン。StringIOだって文字列を喰わせてるだけで出力していなければ実質何もしていないのと同じ。)

f $>

ならば標準出力にメッセージが表示されます。

f $bell

ならば黒板にです。

$nulloutも$>も$bellもクラスは違っていても同じインターフェースを持っていればいいのです!

6.4 使用例

7 ライセンス

GPLとします。

8 履歴

[2005/03/25]

BellIO クラス。

[2003/06/07]

1年以上昔から作っていたが、役にたちそうなので初公開。


戻る ホームページへ戻る

Valid XHTML 1.0!
rubikitch(rubikitch@ruby-lang.org)

投書箱:コメントや伝えたい情報などがあればお気軽にどうぞ
名前 メール [説明]
URL
本文


*1まあわしがCUIプログラムしか書けないんだけど(^^;
*2そもそもscreensplit.rbはbelldのために書いた。