Tu equipo desarrolló una gran aplicación web en Rails. El release está listo, las pruebas pasaron y DevOps ya hizo el deploy. La app está online… y de pronto falla. “¡Pero todo funcionaba correctamente! Todas las pruebas pasaron sin inconvenientes.”
format_quote“¡Y debe ser para ya!”
Tarde o temprano hay que hacer debug en producción. Si tienes acceso al log, puedes ver qué pasó. Si no tienes acceso al servidor, el error tiene que llegar a ti. Aquí integramos las gemas exception_notification y slack-notifier para recibir el fallo en Slack.
Para este ejemplo se asume que ya tienes un workspace en Slack y un canal que recibirá las notificaciones de la app.
Crear un Incoming WebHook en Slack
- Entra a Incoming WebHooks.
- Selecciona tu workspace y pulsa “Add configuration”.
- Elige el canal donde quieres las notificaciones.
- Copia la Webhook URL: la vamos a pegar en Rails.
Añade las gemas
Edita el Gemfile y deja que Bundler instale las dependencias:
gem 'exception_notification' gem 'slack-notifier'
bundle install
Configurar production.rb
En config/environments/production.rb registra el middleware y sustituye la URL por la de tu WebHook:
Rails.application.config.middleware.use ExceptionNotification::Rack,
slack: {
webhook_url: ENV.fetch('SLACK_WEBHOOK_URL')
}Cuando ocurra una excepción, Slack recibirá la ruta, el controlador, la acción, el nombre de la excepción y el fragmento del log. Suficiente para apuntar al equipo hacia la solución sin entrar al servidor.
Hay herramientas más completas (monitoreo, APM). Para un aviso rápido e informal, esta pareja de gemas se configura en minutos y ya da señal cuando algo se rompe.
