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.devYou can connect to any of those processes directly:
$ overmind connect sidekiqWhen you want to binding.irb the Rails server, you can specifically connect to
the web process to do that.
$ overmind connect webIf you need to stop all the process, you can run the kill subcommand.
$ overmind killLastly, 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.