Ruby on Rails

Página de status e monitoramento de uptime para apps Rails

Monitore controllers Rails, Active Record, filas Sidekiq e Redis. Página bonita ou construa a sua via nossa API.

Três formas de lançar uma página de status para Ruby on Rails

Escolha o nível de controle — sem código, low-code ou headless completo.

Hospedado

Adicione seu endpoint Ruby on Rails, aponte um CNAME para status.seudominio.com, pronto. Em 5 minutos.

Headless

Use nossa API pública para construir sua própria UI dentro do app Ruby on Rails. Controle total sobre design e marca.

Ver a API

Badges embutidos

Coloque badges SVG de uptime e status no seu README ou landing page. Atualizam a cada 5 minutos.

Cole este health endpoint no seu app Ruby on Rails

Copie, cole, aponte o PulseAPI para a URL. Retorna 200 saudável, 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

Conecte com `get "/health", to: "health#show"` no routes.rb. Pule CSRF, auth e middleware que daria 401 para a sonda.

O que quebra em apps Ruby on Rails — e como detectar

Filas Sidekiq crescendo em silêncio

Um worker travado deixa a fila inflar enquanto a app serve tráfego. Exponha queue-depth e alerte sob limite.

Regressões N+1

Um .includes() faltante pode multiplicar por 10 o tempo de resposta. Asserções pegam a regressão no primeiro minuto pós-deploy.

Starvation do pool de conexões

Queries longas bloqueiam o pool. Health com timeout curto revela o problema antes do ActionCable perder usuários.

Abordagem headless

Não gostou da nossa página de status? Construa a sua em Ruby on Rails.

Nossa API retorna os mesmos dados que nossa UI hospedada consome. Spec OpenAPI completa em api.pulseapi.tech/docs.

app/controllers/status_controller.rb — construa sua própria UI de status sobre nossa 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

Monitoramento Ruby on Rails — FAQ

Funciona com Rails, Sinatra, Hanami ou Padrino?

Sim. O monitoramento é no nível HTTP — o framework não importa.

Como monitoro uma fila Sidekiq?

Retorne a profundidade da fila de uma action e alerte sob limite. PulseAPI suporta JSON-path: `$.queue_depth < 100`.

Funciona com Heroku, Fly.io e Render?

Sim, e com qualquer deploy. O PulseAPI só precisa de uma URL pública.

Posso embedar a página de status dentro do app Rails?

Sim. Chame a API pública de um controller, renderize um template, ou use um turbo_frame com um partial server-rendered.

Comece a monitorar seu app Ruby on Rails em 5 minutos

Plano grátis. Sem cartão. Adicione seu endpoint e receba alertas quando quebrar.