From 80ca31f83e52e248329483ff20d57f202d035ecc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:39:58 +0000 Subject: [PATCH 1/3] Bump capistrano3-puma from 6.0.0 to 6.2.0 Bumps [capistrano3-puma](https://github.com/seuros/capistrano-puma) from 6.0.0 to 6.2.0. - [Changelog](https://github.com/seuros/capistrano-puma/blob/master/CHANGELOG.md) - [Commits](https://github.com/seuros/capistrano-puma/compare/v6.0.0...v6.2.0) --- updated-dependencies: - dependency-name: capistrano3-puma dependency-version: 6.2.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 405321d49..11ddab300 100644 --- a/Gemfile +++ b/Gemfile @@ -90,7 +90,7 @@ group :development do gem "capistrano-npm", "~> 1.0.3", require: false gem "capistrano-rails", "~> 1.7.0", require: false gem "capistrano3-delayed-job", "~> 1.7.6" - gem "capistrano3-puma", "~> 6.0.0" + gem "capistrano3-puma", "~> 6.2.0" gem "erb_lint", "~> 0.9.0", require: false gem "faraday-retry", "~> 2.3.1", require: false gem "htmlbeautifier", "~> 1.4.3", require: false diff --git a/Gemfile.lock b/Gemfile.lock index 1e456c945..7e55c3e34 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -139,7 +139,7 @@ GEM capistrano3-delayed-job (1.7.6) capistrano (~> 3.0, >= 3.0.0) daemons (~> 1.3) - capistrano3-puma (6.0.0) + capistrano3-puma (6.2.0) capistrano (~> 3.7) capistrano-bundler puma (>= 5.1, < 7.0) @@ -444,7 +444,7 @@ GEM omniauth-oauth (~> 1.1) rack orm_adapter (0.5.0) - ostruct (0.6.1) + ostruct (0.6.2) parallel (1.27.0) paranoia (3.0.1) activerecord (>= 6, < 8.1) @@ -757,7 +757,7 @@ DEPENDENCIES capistrano-npm (~> 1.0.3) capistrano-rails (~> 1.7.0) capistrano3-delayed-job (~> 1.7.6) - capistrano3-puma (~> 6.0.0) + capistrano3-puma (~> 6.2.0) capybara (~> 3.40.0) capybara-webmock (~> 0.7.0) caxlsx (~> 4.2.0) From 84a88ee1fba65b88bbe0525d59c48ce9382d2580 Mon Sep 17 00:00:00 2001 From: taitus Date: Mon, 7 Jul 2025 13:26:21 +0200 Subject: [PATCH 2/3] 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. --- config/deploy.rb | 1 + lib/capistrano/templates/puma.service.erb | 40 ----------------------- 2 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 lib/capistrano/templates/puma.service.erb diff --git a/config/deploy.rb b/config/deploy.rb index 3b1ab6d2c..b8906cd2a 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -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 diff --git a/lib/capistrano/templates/puma.service.erb b/lib/capistrano/templates/puma.service.erb deleted file mode 100644 index 9571a15ad..000000000 --- a/lib/capistrano/templates/puma.service.erb +++ /dev/null @@ -1,40 +0,0 @@ -# This file tells systemd how to run Puma as a 24/7 long-running daemon. -# -# Customize this file based on your bundler location, app directory, etc. -# Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu). -# Then run: -# - systemctl enable <%= fetch(:puma_service_unit_name) %> -# - systemctl {start,stop,restart} <%= fetch(:puma_service_unit_name) %> -# -# -# Use `journalctl -u <%= fetch(:puma_service_unit_name) %> -rn 100` to view the last 100 lines of log output. -# -[Unit] -Description=Puma HTTP Server for <%= "#{fetch(:application)} (#{fetch(:stage)})" %> -<%= "Requires=#{fetch(:puma_service_unit_name)}.socket" if fetch(:puma_enable_socket_service) %> -After=network.target - -[Service] -Type=<%= service_unit_type %> -WatchdogSec=0 -<%="User=#{puma_user(@role)}" if fetch(:puma_systemctl_user) == :system %> -WorkingDirectory=<%= current_path %> -ExecStart=<%= expanded_bundle_command %> exec puma -e <%= fetch(:puma_env) %> -ExecReload=/bin/kill -USR1 $MAINPID -<%- Array(fetch(:puma_service_unit_env_files)).each do |file| %> -<%="EnvironmentFile=#{file}" -%> -<% end -%> -<% Array(fetch(:puma_service_unit_env_vars)).each do |environment_variable| %> -<%="Environment=\"#{environment_variable}\"" -%> -<% end -%> - -# if we crash, restart -RestartSec=1 -Restart=on-failure - -<%="StandardOutput=append:#{fetch(:puma_access_log)}" if fetch(:puma_access_log) %> -<%="StandardError=append:#{fetch(:puma_error_log)}" if fetch(:puma_error_log) %> - -SyslogIdentifier=puma -[Install] -WantedBy=<%=(fetch(:puma_systemctl_user) == :system) ? "multi-user.target" : "default.target"%> From a9ba7425bff277fa0530f89e43322c2fe45bd6ed Mon Sep 17 00:00:00 2001 From: taitus Date: Mon, 7 Jul 2025 13:27:52 +0200 Subject: [PATCH 3/3] Remove redundant puma_bind override The default "puma_bind" setting was reintroduced in capistrano3-puma 6.2.0 as "unix://.../tmp/sockets/puma.sock". We no longer need to define it explicitly in deploy.rb. NOTE: Although the official capistrano3-puma README still states that "puma_bind" must be explicitly set after upgrading to v6, this is no longer true since version 6.2.0. The default value ("unix://.../tmp/sockets/puma.sock") has been restored. --- config/deploy.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index b8906cd2a..68981ca40 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -53,7 +53,6 @@ set :puma_systemctl_user, :user set :puma_enable_socket_service, true set :puma_service_unit_env_vars, ["EXECJS_RUNTIME=Disabled"] 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