Ruby on Rails

Page de statut et monitoring d'uptime pour applications Rails

Monitorez contrôleurs Rails, Active Record, files Sidekiq et Redis. Page jolie ou construisez la vôtre via notre API.

Trois façons de livrer une page de statut pour Ruby on Rails

Choisissez le niveau de contrôle — sans code, low-code, ou full headless.

Hébergé

Ajoutez votre endpoint Ruby on Rails, pointez un CNAME sur status.votredomaine.com, fini. Marche en 5 minutes.

Headless

Utilisez notre API publique pour construire votre propre UI dans votre app Ruby on Rails. Contrôle total du design et du branding.

Voir l'API

Badges embarqués

Intégrez des badges SVG uptime et statut dans votre README ou landing. Mise à jour toutes les 5 minutes.

Collez ce health endpoint dans votre app Ruby on Rails

Copiez, collez, pointez PulseAPI sur l'URL. Renvoie 200 sain, 503 dégradé.

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

Branchez avec `get "/health", to: "health#show"` dans routes.rb. Skip CSRF, auth et middleware qui renverrait 401 à la sonde.

Ce qui casse dans les apps Ruby on Rails — et comment le détecter

Files Sidekiq qui grossissent en silence

Un worker bloqué laisse la file gonfler pendant que l'app sert. Exposez queue-depth et alertez sur seuil.

Régressions N+1

Un .includes() oublié peut multiplier par 10 le temps de réponse. Les assertions attrapent la régression dans la minute suivante.

Pool de connexions affamé

Des requêtes longues bloquent le pool. Un health endpoint avec timeout court révèle le souci avant qu'ActionCable ne perde les utilisateurs.

Approche headless

Notre page de statut ne vous plaît pas ? Construisez la vôtre dans Ruby on Rails.

Notre API renvoie les mêmes données que notre UI hébergée consomme. Spec OpenAPI complète sur api.pulseapi.tech/docs.

app/controllers/status_controller.rb — construisez votre propre UI de statut sur notre 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

Monitoring Ruby on Rails — FAQ

Ça marche avec Rails, Sinatra, Hanami ou Padrino ?

Oui. Le monitoring est au niveau HTTP — le framework n'importe pas.

Comment monitorer une file Sidekiq ?

Retournez la profondeur depuis une action contrôleur et alertez sur seuil. PulseAPI supporte JSON-path: `$.queue_depth < 100`.

Ça marche avec Heroku, Fly.io et Render ?

Oui, et avec tout déploiement. PulseAPI a juste besoin d'une URL publique.

Je peux embarquer la page de statut dans l'app Rails ?

Oui. Appelez l'API publique depuis un contrôleur, rendez un template, ou utilisez un turbo_frame avec un partial server-rendered.

Commencez à monitorer votre app Ruby on Rails en 5 minutes

Version gratuite. Sans carte. Ajoutez votre endpoint et recevez des alertes en cas de panne.