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.