Lidando com exceções em seu aplicativo Rails

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.