Ruby on Rails

Página de estado y monitoreo de uptime para apps Rails

Monitorea controladores Rails, Active Record, colas Sidekiq y Redis. Página de estado bonita o construye la tuya vía API.

Tres formas de lanzar una página de estado para Ruby on Rails

Elige el nivel de control que necesitas — sin código, low-code o headless completo.

Alojado

Añade tu endpoint Ruby on Rails, apunta un CNAME a status.tudominio.com, listo. Funciona en 5 minutos.

Headless

Usa nuestra API pública para construir tu propia UI dentro de tu app Ruby on Rails. Control total sobre diseño y marca.

Ver la API

Badges embebidos

Coloca badges SVG de uptime y estado en tu README o landing page. Se actualizan cada 5 minutos.

Pega este health endpoint en tu app Ruby on Rails

Copia, pega, apunta PulseAPI a la URL. Devuelve 200 sano, 503 degradado.

app/controllers/health_controller.rb
class HealthController < ApplicationController
  skip_before_action :authenticate_user!, raise: false

  def show
    checks = {
      database: active_record_ok? ? "ok" : "fail",
      cache: cache_ok? ? "ok" : "fail",
      sidekiq: sidekiq_ok? ? "ok" : "fail",
    }
    healthy = checks.values.all? { |v| v == "ok" }
    render json: { status: healthy ? "healthy" : "degraded", **checks },
           status: healthy ? 200 : 503
  end

  private

  def active_record_ok?
    ActiveRecord::Base.connection.execute("SELECT 1") && true
  rescue StandardError
    false
  end

  def cache_ok?
    Rails.cache.write("health:probe", "1", expires_in: 5.seconds)
    Rails.cache.read("health:probe") == "1"
  rescue StandardError
    false
  end

  def sidekiq_ok?
    Sidekiq.redis { |c| c.ping == "PONG" }
  rescue StandardError
    false
  end
end

Conéctalo con `get "/health", to: "health#show"` en routes.rb. Salta CSRF, auth y middleware que daría 401 al monitor.

Qué se rompe en apps Ruby on Rails — y cómo detectarlo

Colas Sidekiq creciendo en silencio

Un worker atascado deja la cola creciendo mientras la app sirve tráfico. Expón queue-depth y alerta sobre un umbral.

Regresiones N+1

Un .includes() faltante puede multiplicar x10 el tiempo de respuesta. Las aserciones lo detectan en el primer minuto post-deploy.

Inanición del pool de conexiones

Queries largos bloquean el pool y las peticiones se acumulan. Un health con timeout rápido lo revela antes de que ActionCable pierda usuarios.

Enfoque headless

¿No te gusta nuestra página de estado? Construye la tuya en Ruby on Rails.

Nuestra API devuelve los mismos datos que consume nuestra UI alojada. Spec OpenAPI completa en api.pulseapi.tech/docs.

app/controllers/status_controller.rb — construye tu propia UI de estado sobre nuestra API.
require "net/http"
require "json"

class StatusController < ApplicationController
  def show
    uri = URI("https://api.pulseapi.tech/status/acme")
    @data = JSON.parse(Net::HTTP.get(uri))
  end
end

Monitoreo Ruby on Rails — FAQ

¿Funciona con Rails, Sinatra, Hanami o Padrino?

Sí. El monitoreo es a nivel HTTP — el framework no importa.

¿Cómo monitoreo una cola Sidekiq?

Devuelve la profundidad actual desde una action y alerta sobre un umbral. PulseAPI soporta JSON-path: `$.queue_depth < 100` funciona.

¿Funciona con Heroku, Fly.io y Render?

Sí, y con cualquier deployment. PulseAPI solo necesita una URL pública.

¿Puedo embeber la página de estado dentro de la app Rails?

Sí. Llama la API pública desde un controlador, renderiza un template, o usa un turbo_frame con un partial server-rendered.

Empieza a monitorear tu app Ruby on Rails en 5 minutos

Plan gratuito. Sin tarjeta. Añade tu endpoint y recibe alertas cuando falle.