Posted over 3 years ago. Visible to the public.

Procfile support

If you need to run specific program(s) and be sure they will get restarted if they quit unexpectedly or after a reboot, then you can create a file named Procfile in your repository to be used by supervisord. This works best with capistrano-opscomplete Archive .

If you want to use this feature, please contact so we can enable it for your deployment.

Procfile Syntax

Currenlty the Procfile features we support are rather limited, please be aware of this. The basic syntax of the Procfile is:

$program_name: $command

For example to automatically start sidekiq:

sidekiq: bundle exec sidekiq

Important: The defined commands should not daemonize, as supervisord does that for you and otherwise can't track the commands.

You can use environment variables in your command with %{ENV_VARIABLE}s where VARIABLE is the name of the environment variable like this:

app: %{ENV_APPDIR}s/current/run_app start


After you've created the Procfile, you also need to setup the the tasks for the deployment. If you're already using capistrano-opscomplete Archive , you can add these lines to your Capistrano config:

# Update and Restart supervisor config after 'deploy:updating', 'opscomplete:supervisor:gen_config' after 'deploy:published', 'opscomplete:supervisor:restart_procs'

There are more tasks and configuration options. Please refer to the README Archive for those and more.

Available commands on the server

If you can't or don't want to integrate capistrano-opscomplete, you can use the shell commands available on the server. They're useful if you want to verify commands manually too.

  • supervisor_gen_config

This command generates the configuration for supervisord. You need to run it before the other commands and at least every time you change your Procfile. There is no harm running it at every deploy.

  • supervisor_restart_procs

This command rereads the supervisord configuration and (re)starts all configured programs.

  • supervisor_stop_procs

This command stops all your programs in case you want to them to be stopped while your deployment runs.

  • supervisor_status

This command shows the status of all configured supervisord programs this user has access to.

  • supervisor_signal_procs $signal $program_name(optional)

This command sends the signal $signal (e.g. USR1 or TSTP) to all programs or if specified to $program_name.


The output of your programs (stdout and stderr) will get written into log files. You will find these logs here:

# stdout: ${appdir}/shared/log/${program_name}-1.log # stderr: ${appdir}/shared/log/${program_name}-1.error.log

Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for unsupported versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2).

Owner of this card:

Kim Jahn
Last edit:
11 months ago
by Marius Schuller
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Kim Jahn to opscomplete
This website uses short-lived cookies to improve usability.
Accept or learn more