Sinatraで自作before_filterを使った場合と使わない場合でコードがどれぐらい変わるか?

 もはや誰も望んでいなさそうなSinatraの細かいネタですがねちねちと続けます。
 今回は、前回作った自作のbefore_filterを使った場合と、使わずに直接beforeメソッドを使った場合とで、コードがどう変わるか、簡単に比較してみる。
 まずは使わない場合から。

before do
  if request.path_info =~ /^\/admin\//
    if not login_as_admin?
      throw :halt, "required admin privilege."
    end
  end
end

 まぁこんなもんかなぁという感じ。個人的には/^\/admin\//という正規表現はあまり読みやすいとは思えないけど、他の部分は特に文句はない。request.path_infoにパス情報が入っているので、それを正規表現でチェックして、フィルタ対象のURLである場合にはさらにadmin権限を持っているかどうかをチェックしている。で、権限がない場合、throw :haltが実行される。throwするとcatchまで処理がすっ飛ぶので、通常のroutingによる処理は全部スキップされ、"required admin privilege."というエラーメッセージが返ることになる。
 次に自作のbefore_filterを使った場合。

before_filter '/admin/*' do
  if login_as_admin?
    pass
  else
    return "required admin privilege."
  end
end

 こちらの方が、フィルタ対象となるパスの指定はわかりやすいように感じる。ただ、明示的にpassするようになった分、コード行が増えたようにも感じる。実際には5行で行数は変わらないし、絶対的なタイプ量も微妙に減ってるんだけど…。
 before_filterの方がコードはわかりやすいと思うんだけど、果たしてSinatra本体にコードを追加するだけのある価値があるのかどうかはよくわからない。とりあえずもうちょっと手元で使って考えてみる。