Ruby 版の Plagger みたいなもの。
データを取ってきて、処理を施して、どこかに出力するものです。
入手方法
svn co http://pragger.ikejisoft.com/svn/pragger/trunk/ pragger
pragger.rb が実行スクリプト、plugin/ はプラグインのディレクトリです。
実行サンプル
単に RSS をローカルに保存する例
sample1.yaml
- module: load_rss
config:
url: http://www.rsssuite.jp/rssmarketing/f602/index.rdf
- module: save_rss
config:
filename: /var/tmp/rssmarketing.rdf
link: http://www.rssmarketing.jp/
title: RSSマーケティングガイド
実行
% pragger.rb -c sample1.yaml
設定ファイルは -c オプションで設定可能。(デフォルトは config.yaml)
単語「Yahoo」で絞り込む例
grep プラグインの設定を追加
- module: load_rss
config:
url: http://www.rsssuite.jp/rssmarketing/f602/index.rdf
- module: grep
config:
regex: "Yahoo"
- module: save_rss
config:
filename: /var/tmp/rssmarketing.rdf
link: http://www.rssmarketing.jp/
title: RSSマーケティングガイド
実行の流れ
ソースコードを眺めてみる
pragger.rb 本体はとても小さい。
% wc -l pragger.rb
41 pragger.rb
本体では基本的に
eval_pragger(YAMLで与えられた設定, [])
しているだけ。
eval_pragger の中は……
def eval_pragger(command_array,data)
command_array.inject(data) do |data, command|
puts "exec plugin #{command["module"]}"
$plugins[command["module"]].send(command["module"].sub(/.*::/,""), command["config"] || {}, data.dup)
end
end
データをプラグインに入力として渡し、プラグインからの出力がそのまま次のプラグインへの入力となっている。
プラグインの作り方
foo_bar プラグインを作る場合
- ファイル名は myplugin/foo_bar.rb
- メソッド foo_bar(config, data) を作る
- config が設定、data が入力データ
- メソッド foo_bar の戻り値が次のプラグインへと渡される
詳しくは http://pragger.ikejisoft.com/wiki/HowToMakePlugin
plagger と比べてみると
- Ruby で書かれている
- インストールが簡単
- プラグインはまだあまりない
- シンプル
プラグイン間でやりとりするデータの形式が特に決まっていないようなので、 柔軟にできる反面やりづらいかもしれません。