Manejo de ActiveRecord :: RecordNotFound con ActionController :: Metal

Estoy en la etapa de API de desarrollo (JSON) y decido heredar miApiController desdeActionController::Metal para tomar ventaja de la velocidad etc.

Así que he incluido un montón de módulos para que funcione.

Recientemente he decidido responder con un resultado vacío cuando no se encuentra el registro. Los carriles ya tiran.ActiveRecord::RecordNotFound desdeModel#find Método y he estado tratando de usarrescue_from Para atraparlo y escribir algo como esto:

module Api::V1
  class ApiController < ActionController::Metal
    # bunch of included modules 

    include ActiveSupport::Rescuable

    respond_to :json

    rescue_from ActiveRecord::RecordNotFound do
      binding.pry
      respond_to do |format|
        format.any { head :not_found }
      end
    end
  end
end  

Después de llamar a mi simple acción.

def show
  @post = Post.find(params[:id])
end

Y la ejecución nunca llega.rescue_from. Se tira

ActiveRecord::RecordNotFound (Couldn't find Post with id=1

en mi archivo de registro.

Lo he estado probando y en modo producción. El servidor responde con 404 pero el cuerpo de respuesta es estándarHTML página de error paraJSON solicitud.

Funciona bien cuando cambio la herencia deActionController::Metal aActionController::Base.

Usted puede notar sobre la falta derespond_with llamada. Eso es porque estoy usandoRABL como mi sistema de plantillas.

Así que la pregunta es: ¿Hay alguna posibilidad de hacerrescue_from trabajar conMetal o deshacerse de HTML de la respuesta?

Respuestas a la pregunta(1)

Su respuesta a la pregunta