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本体のメソッドは,プラグインそれぞれに割り当てられるオブジェクトの特異メソッドとして定義されるため,メソッド名が衝突することはありません.