PRaggerみたいな何か - pipepo(ぴぺぽ)

PRaggerは便利そうなのですが、YAMLで設定ファイルを書くのが面倒だなぁと思って、Ruby自体をDSLとしたPRaggerみたいなものを作ってみました。名前はpipepo(ぴぺぽ)です。名前の由来は、パイプぽい(PIPE POi)何かです。
ファイル: pipepo.rb

#!/usr/bin/env ruby

eval(ARGF.read)
@pipe.inject(nil) {|acc, meth| meth[acc] }

ファイル: sample.conf

# -*- ruby -*-

def foo1(s)
  lambda {|a| s }
end

def foo2
  lambda {|a| a.upcase }
end

def foo3
  lambda {|a| puts a }
end

@pipe = [
  foo1('Hello, world!!'),
  foo2,
  foo3
]

実行例:

$ ruby pipepo.rb sample.conf
HELLO, WORLD!!

実装について少し補足します。プラグインはlambdaで書きます。設定(PRaggerでいうところのconfig)はlambdaの中に閉じ込めます(foo1のsを参照)。
そのうちコードをまとめてGoogle Code Archive - Long-term storage for Google Code Project Hosting.で公開しようと思います。Google Code - Project Hostingは思い付いたときにすぐプロジェクトを始められるので便利です。
参照: Shun Ikejima