"Catch :respond in Action#process" のパッチが通っちゃった

RedirectHelper.respond なんかを呼び出した時に Ramaze::Dispatcher::Action::FILTER が適用されない場合があったのでパッチを投げました。

Ramaze::Dispatcher::Action::FILTER << proc {|response|
  response.header['Cache-Control'] = 'no-store'
  response
}

class MyController < Ramaze::Controller
  map '/'

  def index
    respond(render_partial Rs(:partial))
  end

  def partial
    "hello"
  end
end

で、 /index の時に適用されないのが問題、というわけです。これを修正するのに Action#process で :respond を捕獲しちゃえば!というのが次のパッチ。

catch :respond in Action#process

これ影響大きそうだから、パッチの適用は待ってね!って言われたんだけど、さっき見てみたら採用されたようです。自分でパッチを投げておきながらアレですが、すごく不安です。本当にこの修正方法で大丈夫なのでしょうか。

とこで私は catch, throw を使ったRubyのプログラムを今まであまり書いたことがありません。とっても便利なのかも知れませんが、バグを生みやすそうだなぁ、と思いました。