7

I have a rails (4.2.4) app running with puma. The documentation says:

If an environment is specified, either via the -e and --environment flags, or through the RACK_ENV environment variable, the default file location will be config/puma/environment_name.rb.

And so that's where my configuration files are.

In my development environment, puma starts up just fine. Here is the configuration:

workers 1
threads 1, 6
environment 'development'
activate_control_app

My production environment has problems however. Here's the configuration:

workers 1
threads 1, 6
environment 'production'
app_dir = File.expand_path('../../..', __FILE__)
bind "unix://#{app_dir}/tmp/sockets/puma.sock"
stdout_redirect "#{app_dir}/log/puma.stdout.log",
                "#{app_dir}/log/puma.stderr.log",
                true
pidfile "#{app_dir}/tmp/pids/puma.pid"
state_path "#{app_dir}/tmp/pids/puma.state"
activate_control_app
daemonize true

This is obviously more complicated, mostly to make use of sockets, logging, and daemonization. I know it works however, because it starts just fine with the following command:

$ bundle exec pumactl start

So far so good. But if I want to stop or restart the server like the above command, I get the following message:

$ bundle exec pumactl stop
Neither pid nor control url available

If I specify the location of the configuration file it works:

$ bundle exec pumactl -F config/puma/production.rb stop

Why do I need to specify the configuration file for stop and restart but not start?

Edward Loveall
  • 1,983
  • 1
  • 19
  • 34

0 Answers0