Ruby on Rails 7 a introduit un nouvel exécutable bin/dev. Il ne sera pas présent par défaut à moins que vous ne créiez une nouvelle application avec l’option --css ou que vous lanciez la commande css:install.

Ce fichier appelle la Gem Foreman qui va à son tour exécuter les processus définis dans le fichier Procfile.dev à la racine de votre projet.

Cette manière de fonctionner vous permet de lancer autant de processus que vous le souhaitez en parallèle, en une seule commande.

Voici un exemple de Procfile sur l’un de mes projets.

web: bin/rails server -p 3000
css: bin/rails tailwindcss:watch
worker: bundle exec good_job start
guard: bundle exec guard
stripe: stripe listen --forward-to localhost:3000/pay/webhooks/stripe

Tout ceci fonctionne parfaitement jusqu’au moment où vous avez besoin de débugger votre application avec des points d’arrêt. Foreman ne vous permet pas d’accéder à la console de debug d’un processus particulier.

C’est là qu’intervient Overmind. Ce programme fait exactement la même chose que Foreman tout en vous permettant de vous connecter à vos processus.

Installez Overmind sur votre machine comme suit :

# on macOS (with homebrew)
$ brew install tmux

# on Ubuntu
$ apt-get install tmux

Puis lancer vos processus :

$ overmind s -f Procfile.dev

Commande overmind server

Je vais maintenant mettre un point d’arrêt dans un contrôleur Rails du processus web.

class HomeController < ApplicationController
  def index
    debugger
    # ...
  end
end

Depuis un autre terminal, mais dans le même répertoire (où se situe votre Procfile.dev), lancez la commande suivante :

$ overmind c web

Commande overmind connect

Vous pouvez maintenant accéder à la console de Ruby ! 🎉

Bien entendu, cette fonctionnalité n’est pas limitée à Ruby et fonctionne avec n’importe quel programme/langage.