1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00
Files
til/rails/run-dev-processes-with-overmind-instead-of-foreman.md

1.6 KiB

Run Dev Processes With Overmind Instead Of Foreman

Most Rails projects that I have worked on have used foreman as a development dependency for running all the processes declared in your Procfile (Procfile.dev). As far as having a single command to run everything (Rails server, asset building, worker(s), etc.), it does the job.

foreman has some serious points of friction though. The one that really stands out to me is that when I try to debug the development Rails server with binding.irb or binding.pry, the other processes tend to interfere.

The alternative to foreman that I've been trying out recently is overmind. A specific selling point of overmind is that it runs all the development processes in a tmux session. That means you can individually connect to, inspect, and restart each process.

Once you've installed overmind (brew install overmind), then you can easily swap it in for foreman like so:

$ overmind start -f Procfile.dev

You can connect to any of those processes directly:

$ overmind connect sidekiq

When you want to binding.irb the Rails server, you can specifically connect to the web process to do that.

$ overmind connect web

If you need to stop all the process, you can run the kill subcommand.

$ overmind kill

Lastly, if you have a bin/dev script in your project, it is probably using foreman. If you and your team prefer overmind, then update that script accordingly and you can simply run bin/dev going forward.