Виноград: используя ошибку! и виноград::Middleware после обратного вызова

В Grape, если вы используете ошибку! метод выдаст ошибку и никогда не вызовет обратный вызов Grape::Endpoint.

Я хотел бы, чтобы приложение вызывало после ошибки, когда ошибка! был вызван.

Я добавил этот промежуточный компонент, чтобы это произошло.

class AfterFailure <  Grape::Middleware::Base

  def call!(env)
    @env = env
    before

    error = catch (:error) do 
      @app_response = @app.call(@env)
      return after || @app_response
    end

    after_failure(error) || throw(:error, error)
  end

  def after_failure(error)
    puts "After Failure"

    nil
  end

end

Есть ли лучший способ сделать это?

Спасибо

1 ответ

Просто вставьте ваше промежуточное ПО до того, как Grape::Middleware::Error

class YourApi < Grape::API
  insert_before Grape::Middleware, AfterFailure

  # your api code...
end

тогда вы можете получить ответ об ошибке от @app_response

Другие вопросы по тегам