20
March
0

Rails debugging. Un vistazo rápido al log

Tal vez esa historia te parezca familiar, por lo menos similar (depende de la organización que tengan en tu centro de trabajo) pero algo con lo que nos enfrentamos tarde o temprano al desarrollar aplicaciones, es hacerles debug a las mismas. Tal vez en un sistema en producción tu tengas acceso al log de la app y en caso de que suceda algún error puedas acceder a él y saber qué es lo que ha pasado. Pero puede ser que tu como desarrollador, no tengas acceso al servidor, y por ende no tienes acceso al log. En este caso, podemos usar una de las tantas alternativas que existen en el entorno de Rails para notificar los errores en las aplicaciones. Vamos a ver cómo integrar las gemas exception_notification y slack_notifier para que, como pudiste deducir, se nos sea notificados a través de Slack cuando suceda un error. 

Para este ejemplo se asume que tienes creado ya un espacio de trabajo en Slack y un canal que será usado para recibir las notificaciones de la app. 

Crear un WebHook entrante en Slack. 

  • Accede a https://slack.com/apps/A0F7XDUAZ-incoming-webhooks 
  • Selecciona tu organización (en caso de que no esté seleccionada ya) 
  • Haz clic en “añadir configuración” y ahora selecciona el canal en el que quieres recibir las notificaciones.  
  • Una vez que se haya creado el WebHook serás direccionado al detalle del mismo, donde podrás entre otras cosas, cambiar el nombre y el ícono que se mostrarán en el chat de Slack. El dato que más nos interesa aquí es la URL de Webhook, cópiala ya que la vamos a usar más adelante. 

Añade las gemas necesarias a tu app 

  • Edita el archivo Gemfile de tu app y agrega las siguientes gemas:
  •     gem 'exception_notification'
  •     gem 'slack-notifier'
  • Ahora deja que se instalen ejecutando:
            bundle install
  • Luego tenemos que editar el archivo config/environments/production.rb y realizar la configuración para que seamos notificados al ocurrir una excepción gracias a exception_notifier: 
            Rails.application.config.middleware.use ExceptionNotification::Rack, 
                :slack => {    
                    :webhook_url => "https://hooks.slack.com/services/TTNXJ9FD/BCJFE203H/TveQd5FueEdieLPfxqU0Nadi" 
                } 
  • Cambia el valor de “webhook_url” por la URL del WebHook que generaste unos pasos antes y guarda los cambios en el archivo. 

Una vez que hemos realizado lo anterior, y nuestra app sea actualizada con los nuevos cambios que hemos hecho, nos llegará un mensaje al canal de Slack que elegimos al crear el WebHook cada vez que una excepción ocurra en la app. El mensaje que se envía contiene la ruta de la app en la que sucedió la excepción, el nombre del controlador y la acción que procesó el request, el nombre de la excepción y el fragmento del log correspondiente al error. 

Espero que esta pequeña guía sea de ayuda para aquellos que buscan una solución rápida e informal para saber rápidamente que y donde falló la aplicación y trabajar rápidamente sobre eso. Puedes leer la documentación completa de exception_notifier para ver otras formas de ser notificado y otras configuraciones adicionales para tus WebHooks o puedes leer sobre slack_notifier y crear tu propia implementación para notificarte de eventos en tu app.  

También hay otro tipo de soluciones, que no solo nos ayudan a saber los errores de nuestras apps, sino también a monitorear el rendimiento de las mismas, Chef por poner un ejemplo, pero exception_notification y slack_notifier en apenas unos minutos de configuración ya nos dan información que, en caso de un fallo crítico, puede ser usada para llevar al equipo de desarrollo en el camino correcto hacia la solución.


Compartir

Contacto

Alianza 205A interior 4 Jalatlaco, Oaxaca de Juárez, Oaxaca karimnotinc@gmail.com (951) 51-58-556 Lunes a Viernes 9am a 6pm