Airbrake es un software de monitoreo de errores, que la mayoría de nosotros, los desarrolladores, recibimos con los brazos abiertos. Básicamente, le ayuda a lidiar con los errores de producción, manteniendo un registro de los mismos, capturando la URL exacta, el número de apariciones, el archivo culpable que causó el error, en definitiva, un seguimiento completo de la pila al que puede recurrir.
Se parece a esto;
Lo que está viendo arriba es una instantánea de un error resuelto, específicamente el error AbstractController::ActionNotFound.
Como puede ver, toda la información está bellamente desglosada para brindar toda la ayuda necesaria en la depuración. Y esta es sólo una de las pestañas, hay más información para que profundices.
Para aplicaciones Ruby on Rails, puede integrar Airbrake agrupando la gema Airbrake. Un par de pasos que siguen a este proceso se resumen decentemente en la página de GitHub de Gem. Puede llegar a esa página siguiendo la página de Airbrake GitHub
Entonces, pasemos ahora a los errores. ¿Cómo haces para arreglarlos?
Puedes silenciar el error, de esa manera Airbrake no te gritará a todo pulmón que lo arregles. Seguirá apareciendo en la lista de errores, para que puedas seleccionarlo cuando te convenga, así que no te preocupes porque se perderá en un agujero negro de errores.
Ahora viene lo principal, solucionarlos. Profundizando en su código para determinar la causa raíz y solucionándola en ese mismo nivel.
Intentemos analizar uno.
El que viste arriba, AbstractController::ActionNotFound . Analicemos éste.
Después de dejar que este error jugara con mi cordura durante algún tiempo, pude deducir la causa. Es el resultado de una mala solicitud del servidor. Alguien estaba tratando de burlar a la aplicación, editando la URL de la página en la que se encontraba en ese momento y aterrizando en una página de su imaginación. Cómo llegué a esta conclusión fue reproduciendo la misma en mi sistema local. Intenté seguir la URL, editando la cadena del host y ¡listo! La bestia salió de su escondite. Rails me saludó diciéndome que la acción que solicité no existía. Siendo esto el resultado de acciones aleatorias del usuario, fue un error que realmente no podía restringirse ya que no tenía control sobre lo que el usuario decidiría visitar.
Fue entonces cuando realmente pude identificarme con el modismo: La ignorancia es felicidad <3
Entonces, agregué la solución para esto en mi archivo airbrake.rb, que es uno de los archivos inicializadores en el directorio de su proyecto.
El bloque de código del salvador era,
¡Hecho con eso!
Otra belleza que encontré fue el error SidekiqStatus::Container::StatusNotFound.
Este fue un poco complicado de depurar. Tuve que molestar a mis compañeros y estuvimos rascándonos la cabeza durante bastante tiempo.
Nuestros trabajos en segundo plano se manejan mediante Sidekiq.
Entonces, Sidekiq no estaba obteniendo el estatus de algo. Después de pasar un tiempo, no más del que debería tener *tos, tos*, llegué a la causa raíz. Sucedía porque había una llamada de Javascript en el código vinculado al evento DOMSubtreeModified (que ahora está en desuso, referencia: DOMSubtreeModified Deprecated). Sidekiq necesitaba un ID de trabajo para devolver el estado, y la llamada para obtener el ID de trabajo se escribió dentro del Javascript incluido en este evento vinculado. Se llamaba al script cada vez que se producía algún cambio en el nivel DOM en la página, independientemente de si el trabajo en segundo plano se estaba ejecutando o no. Esto provocó que el ID del trabajo fuera nulo en ocasiones, lo que provocaba un error al recuperar el estado de Sidekiq.
La solución para esto fue reemplazar ese código y llamar al método explícitamente cada vez que se requiriera la acción. Esto pudo manejar el error y cuando intentamos reproducirlo, ¡nada! ¡Viva!
Estos son los dos errores con los que me enfrenté más recientemente y sentí la necesidad de documentarlos, para referencia futura y para otros desarrolladores que puedan enfrentar problemas similares. Eso es todo por ahora.
RielesCarma combina destreza técnica con un conocimiento profundo de la industria para servir como un socio perfecto para las empresas emergentes en la creación de aplicaciones Ruby on Rails agradables, funcionales y escalables. Con nuestro enfoque centrado en soluciones, su empresa podrá disfrutar de resultados definitivos en términos de rendimiento.
Entonces, ¿tienes una gran idea? ¡A nuestros expertos les encantaría explorar la oportunidad de convertirla en una aplicación exitosa con usted!
¡Salud!
Niyanta
Ahorrar
Ahorrar