Remove overridden puma.service.erb template
We remove our custom puma.service.erb template located at lib/capistrano/templates, as the upstream capistrano3-puma gem (v6.2.0) now supports all the adjustments we previously needed. This template was originally copied and modified in PR #5842 (Bump capistrano3-puma from 5.2.0 to 6.0.0), with the following relevant changes: 1. WatchdogSec=0 We disabled systemd's watchdog feature by setting WatchdogSec=0. This is now covered upstream since v6.1.0 via: > <% if fetch(:puma_systemd_watchdog_sec) && fetch(:puma_systemd_watchdog_sec) > 0 %> > WatchdogSec=<%= fetch(:puma_systemd_watchdog_sec) %> > <% end %> To preserve the same behavior, we now explicitly set: > set :puma_systemd_watchdog_sec, 0 in config/deploy.rb, instead of relying on the template override. 2. SyslogIdentifier=puma In our custom template, we replaced the default line: > SyslogIdentifier=<%= fetch(:puma_service_unit_name) %> with: > SyslogIdentifier=puma This was done to avoid introducing a new config variable in the installer. However, now that we want to remove the overridden template, we must accept the default behavior from the gem: > set :puma_service_unit_name, -> { "puma_#{fetch(:application)}_#{fetch(:stage)}" } As a result, the generated SyslogIdentifier will change from "puma" to something like "puma_consul_staging". The only implication is that we'll open a PR in the installer to replace the hardcoded "puma" with the dynamic default, so everything stays consistent. Another option would be to override puma_service_unit_name with "puma" to keep the SyslogIdentifier exactly as before. However, this would also affect the names of the systemd services and sockets (e.g., puma.service instead of puma_consul_staging.service), which may lead to conflicts or require manual cleanup steps like disabling and removing the old units. For now, we prefer to avoid that. 3. After=network.target We had removed the "syslog.target" from the "After=" directive, as we didn't depend on syslog. However, keeping "After=syslog.target network.target" does not negatively impact us, since Puma logs to files directly using StandardOutput=append:.... So we can also adopt the default value from template here. 4. ExecStart In version 6.2.0, a small change was made to the template logic for the ExecStart line. This change does not affect us. Since we don't define puma_use_login_shell, the behavior remains exactly the same as before. With these changes already supported in the gem, we no longer need a local copy of the puma service template.
This commit is contained in:
@@ -56,6 +56,7 @@ set :puma_service_unit_name, -> { "puma_#{fetch(:application)}_#{fetch(:stage)}"
|
||||
set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock"
|
||||
set :puma_access_log, -> { File.join(shared_path, "log", "puma_access.log") }
|
||||
set :puma_error_log, -> { File.join(shared_path, "log", "puma_error.log") }
|
||||
set :puma_systemd_watchdog_sec, 0
|
||||
|
||||
set :delayed_job_workers, 2
|
||||
set :delayed_job_roles, :background
|
||||
|
||||
Reference in New Issue
Block a user