If you are new to signals it can be useful to see how they can be used. When a process is created in a *nix like operating system it will have a PID - or process identifier that can be used to send signals to the process. For demonstration we will create an infinitely running process by tailing a file:

  1. $ ps aux | grep tail
  2. schneems 87152 0.0 0.0 2432772 492 s032 S+ 12:46PM 0:00.00 tail -f my.log

You can send a signal in Ruby using the :

Puma cluster responds to these signals:

  • TTIN increment the worker count by 1
  • TTOU decrement the worker count by 1
  • TERM send TERM to worker. Worker will attempt to finish then exit.
  • restart workers. This also reloads puma configuration file, if there is one.
  • HUP reopen log files defined in stdout_redirect configuration parameter. If there is no stdout_redirect option provided it will behave like INT
  • INT equivalent of sending Ctrl-C to cluster. Will attempt to finish then exit.
  • CHLD
  1. puma configuration file reloaded, if there is one
  2. * Pruning Bundler environment
  3. puma configuration file reloaded, if there is one
  4. before_fork
  5. on_worker_fork
  6. after_worker_fork
  7. on_worker_boot
  8. Code of the app is loaded and running
  1. on_worker_shutdown
  2. on_worker_fork
  3. after_worker_fork
  4. Gemfile in context
  5. on_worker_boot
  6. Code of the app is loaded and running