Praggerで遊ぶよ!
※情報が古くなっていたので,少し修正しました
plugin/exec.rbとして,次のようなファイルを作る
def exec(config, data) IO.popen(config["command"], "r+") {|io| ret = nil t1 = Thread.start(data){|data| io.write(data) io.close_write } t2 = Thread.start{ ret = [io.read()] } t1.join t2.join ret } end
こんな感じで。使い方は,
- module: exec config: command: cat
とかする。この例では,catを呼び出して,標準入力にdataを渡し,catの出力をそのままdataに入れてます.dataをto_sで変換した結果がcatに渡されて,catの結果を含む文字列一つの配列が返り値になる.
簡単簡単。
ファイル名と同じ名前のメソッドを,pluginとして呼びだします.plugin本体のメソッドは,プラグインそれぞれに割り当てられるオブジェクトの特異メソッドとして定義されるため,メソッド名が衝突することはありません.