2

私の Grape アプリにはいくつかのエラー ハンドラがあります。

rescue_from :all, backtrace: true do |e|
  message = { errors: { all: e.message } }
  rack_response(format_message(message, e.backtrace), 500 )
end

しかし、これは少なくともGrapeが処理するエラーを救うものではありません

throw :error

初めの。これらのエラーを救うにはどうすればよいですか? 記録されている特定のエラーは、「要求された形式 'txt' はサポートされていません」および「見つかりません: some_path」です。これらのエラーは、フォーマット拡張子がないか、「.」のみの場合に発生します。がそれぞれ供給されます。

4

1 に答える 1

1

スローされた条件を救出しません。これらは、スローされた条件ではなく、d エラーrescue用であるため、エラー ハンドラーに直接移動します。とまったく同じオブジェクトを作成するわけではなく、同じ方法で処理することはできません。raisethrowraise

ただし、次を使用してエラーメッセージをフォーマットerror_formatterできます。

module CustomErrorFormatter
  def self.call message, backtrace, options, env
     { errors: { all: message.to_s } }.to_json
  end
end

そしてメインアプリで:

error_formatter :json, CustomErrorFormatter
于 2014-02-19T08:09:43.670 に答える