This is the first time I've heard about Foreman, and it looks like it could be very convenient for development. I appreciate the attempt to abstract from process requirement details in the same way that Gemfiles do for gems. I think there's the germ of a good idea here.
The example for a production environment, however, is pretty unpersuasive. Tools like Passenger (mod_rails) dynamically start and stop processes depending on load, number of requests, etc. That is much more useful than just saying "start four mongrels".
The production environment can use the same Procfile. It's just a question of how declarative the language is and how intelligent the environment is WRT load etc. I like the idea of having all the processes declared in One Place.
Erlang OTP has been doing this forever; this is UNIX catching up.
Erlang and supervisor in places have been doing this for a while, but it hasn't been pervasive in any web deployment platform. The flexibility this allows for web production systems really is significant, versus one off solutions for specific languages. This can truly allow for a scalable platform across languages.
The example for a production environment, however, is pretty unpersuasive. Tools like Passenger (mod_rails) dynamically start and stop processes depending on load, number of requests, etc. That is much more useful than just saying "start four mongrels".