こんにちは私はルビーラックで例外処理を適切に管理する方法について質問がありました。
現在、Sinatra / Rackを使用して軽量APIを構築していますが、すべてのルートで例外が発生する可能性があります(パラメーターの欠落、形式の無効など)。これらの例外をすべてキャッチして、ミドルウェアアプリケーションで処理できるようにしたいと思います。各get、post、put、deleteブロック内でキャッチまたは「レスキュー」したくない(例:post'/ me')
ExceptionHandlerがラックスタックの一番上にあるこのようなものを試しました。
私は何かが足りないのですか?
class Api::ExceptionHandler
def initialize(application)
@application = application
end
def call(environment)
@application.call environment
rescue Api::MissingParameterError => parameter
[ 400, { }, [ "parameter #{parameter} missing" ] ]
end
end