RSpec で it の引数とブロックを DRY にする

方法が出来そうだと思ったんだけど、Ruby の Proc に環境をバインドする方法が分からなくて止めた (´・ω・`)
よかったら誰かお願いします。

it のブロック内に 結論、条件、条件、(実行)の順でコードを並べれば行けると思ったのだけど。

    it do
      to_be { @foo.should be_true }
      cond { @foo = true }
      run
    end
  def to_be(&action)
    @procstack = []
    @procstack << action
  end
  
  def cond(&cond)
    @procstack << cond
  end
  
  def run
    while (proc = @procstack.pop)
      proc.call
    end
  end
end

Binding とかあったっけ・・Proc や lambda 周りを復習しないとやばげ。
暫定措置で it "description" ブロック の description を書かない戦術に出てみよう。

これが理想か?

it {
  ::gets   { @foo.should be_true }
  ::when { @foo = true }
  ::when { @foo = true }
  ::run # ホントは書きたくない
}