現在、私は次のようなものを持っています:
def valid?(stuff)
#...
end
get '/somewhere'
return status 403 unless valid?(something) && valid?(something_else)
# ...
end
(この特定のケースでは、param
ユーザーがアクセスしてはいけないものにアクセスできないようにするために、ファイル名を含む がそのパラメーターに許可されているディレクトリ内にあるかどうかを確認しています。)
しかし、特に複数の場所で同じ構造を持っているため、扱いにくくなります。私はむしろこのようなことをしたい:
def ensure_valid(stuff)
raise Forbidden unless valid?(stuff)
end
get '/somewhere'
ensure_valid(something)
ensure_valid(something_else)
# ...
end
そのような例外はありますか?status 403
そうでない場合、カスタム例外をキャッチした場合にリクエストを中止するように Sinatra (または Rack) を構成するにはどうすればよいですか?