Lidar com exceções em seu aplicativo Rails é muito importante quando você está desenvolvendo um aplicativo da web full stack com Rails como backend ou expondo APIs REST com Rails.
Portanto, aqui vou orientá-lo no tratamento de algumas exceções em seu aplicativo Rails, especificamente ao desenvolver APIs REST.
Portanto, em primeiro lugar, não os use em seu aplicativo …
rescue_from ActionController::RoutingError, with: :route_not_found
rescue_from ActionController::ActionNotFound, with: :action_not_found
Ambos não funcionam. Sim, você ouviu direito, eles não funcionam.
Portanto, aqui está uma solução alternativa que propus que é usada para lidar com RoutingError em seu aplicativo
WORKAROUND FOR ROUTINGERROR
# Add this in your config/routes.rb
match '*path', :to => 'application#routing_error'
E
# Add this to your application_controller.rb
def routing_error(error = 'Routing error', status = :not_found, exception=nil)
render_exception(404, "Routing Error", exception)
end
Isso basicamente corresponde a qualquer caminho diferente das rotas padrão, portanto, sempre que você encontrar uma rota diferente, você será redirecionado para o aplicativo # routing_error onde pode renderizar a exceção.
WORKAROUND FOR ACTIONNOTFOUND
Para lidar com a exceção ActionNotFound em seu aplicativo, você deve substituir o método ‘action_missing’ em seu controlador de aplicativo.
def action_missing(m, *args, &block)
Rails.logger.error(m)
redirect_to '/*path'
end
Aviso: Você pode usar ‘ falta de método ‘ também, mas isso não será suportado no Rails 4.0, então é mais seguro ir com ‘ falta de ação ‘
Este método será chamado quando um usuário tentar acessar uma ação que não foi definida ou está faltando. Neste estou tentando redirecionar para uma rota não que resulta em routing_error a ser chamado, tratando assim o ActionNotFound com erro de roteamento.
Feliz Hacking !!!
Obrigado por ler …
Informe-nos se tiver outras soluções alternativas para o mesmo.