Skip to content

Latest commit

 

History

History
46 lines (34 loc) · 1.58 KB

File metadata and controls

46 lines (34 loc) · 1.58 KB

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.