capistrano3-puma 5.2.0 → 6.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98e0fb64cfd73c2183c8ac641ec0e426f1721657254eeae1b6cebea4d9b34e78
4
- data.tar.gz: 658219686493acef08d13c050c6d3c8536c980a6820d3d1165dcb5c3e3c80f89
3
+ metadata.gz: 01bd202af4ad17172fc916bf260dbf62087ea870d2a52804d064d0af0887ca2a
4
+ data.tar.gz: 59a9663b2823120f9efc4a02912bce9fd3311d82cca7e519773fd10c0bcc5560
5
5
  SHA512:
6
- metadata.gz: 2423e9acfe501fe4404592ae5099e619aa168e055372ea7e56762a001e59cbefbdf6d32373e7c003a6abe2fefcde429887bddb5d02d7806b8969fa92297d70ad
7
- data.tar.gz: f629c899266cbc6a97b40243c1edfdfa7ba23e6f519f837e6c05209de2845261ca25a823a84ecbf1045fe8566845deff8fb71c7fee967e1c9b46d67896f9652b
6
+ metadata.gz: 2bd42b02660819d794a727b823cf2971aa07aa99bf1b7ffc8b2e7437c8994beec8526eab86395e76c9ce99778c214b281488fc656f870affce42f09ea35a3216
7
+ data.tar.gz: 56f3da4144e37e077f992053782a3bedfff7927b3dff4ff5a10e4ac550c0cbeb5684a7472273108218f4a3b48e8d91d9b0c97f20ecb875915922675233284db9
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2013-2020 Abdelkader Boudih
3
+ Copyright (c) 2013-2022 Abdelkader Boudih
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -21,19 +21,10 @@ And then execute:
21
21
 
22
22
  require 'capistrano/puma'
23
23
  install_plugin Capistrano::Puma # Default puma tasks
24
- install_plugin Capistrano::Puma::Workers # if you want to control the workers (in cluster mode)
25
- install_plugin Capistrano::Puma::Jungle # if you need the jungle tasks
24
+ install_plugin Capistrano::Puma::Systemd
26
25
  install_plugin Capistrano::Puma::Monit # if you need the monit tasks
27
26
  install_plugin Capistrano::Puma::Nginx # if you want to upload a nginx site template
28
27
  ```
29
- You will need to select your service manager
30
- ```ruby
31
- install_plugin Capistrano::Puma::Daemon # If you using puma daemonized (not supported in Puma 5+)
32
- ```
33
- or
34
- ```ruby
35
- install_plugin Capistrano::Puma::Systemd # if you use SystemD
36
- ```
37
28
 
38
29
  To prevent loading the hooks of the plugin, add false to the load_hooks param.
39
30
  ```ruby
@@ -95,27 +86,6 @@ or define a standalone one:
95
86
  role :puma_nginx, %w{root@example.com}
96
87
  ```
97
88
 
98
- ### Jungle
99
-
100
- For Jungle tasks (beta), these options exist:
101
- ```ruby
102
- set :puma_jungle_conf, '/etc/puma.conf'
103
- set :puma_run_path, '/usr/local/bin/run-puma'
104
- ```
105
-
106
- ### Systemd
107
-
108
- Install Systemd plugin in `Capfile`:
109
- ```ruby
110
- install_plugin Capistrano::Puma
111
- install_plugin Capistrano::Puma::Systemd
112
- ```
113
-
114
- To generate unit file use:
115
- ```
116
- cap production puma:systemd:config puma:systemd:enable
117
- ```
118
-
119
89
  To use customize environment variables
120
90
 
121
91
  ```ruby
@@ -172,33 +142,13 @@ Configurable options, shown here with defaults: Please note the configuration op
172
142
 
173
143
  ```ruby
174
144
  set :puma_user, fetch(:user)
175
- set :puma_rackup, -> { File.join(current_path, 'config.ru') }
176
- set :puma_state, "#{shared_path}/tmp/pids/puma.state"
177
- set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
178
- set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock" #accept array for multi-bind
179
- set :puma_control_app, false
180
- set :puma_default_control_app, "unix://#{shared_path}/tmp/sockets/pumactl.sock"
181
- set :puma_conf, "#{shared_path}/puma.rb"
182
- set :puma_access_log, "#{shared_path}/log/puma_access.log"
183
- set :puma_error_log, "#{shared_path}/log/puma_error.log"
184
145
  set :puma_role, :app
185
- set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
186
- set :puma_threads, [0, 16]
187
- set :puma_workers, 0
188
- set :puma_worker_timeout, nil
189
- set :puma_init_active_record, false
190
- set :puma_preload_app, false
191
- set :puma_daemonize, false
192
- set :puma_plugins, [] #accept array of plugins
193
- set :puma_tag, fetch(:application)
194
- set :puma_restart_command, 'bundle exec puma'
195
146
  set :puma_service_unit_name, "puma_#{fetch(:application)}_#{fetch(:stage)}"
196
147
  set :puma_systemctl_user, :system # accepts :user
197
148
  set :puma_enable_lingering, fetch(:puma_systemctl_user) != :system # https://wiki.archlinux.org/index.php/systemd/User#Automatic_start-up_of_systemd_user_instances
198
149
  set :puma_lingering_user, fetch(:user)
199
150
  set :puma_service_unit_env_file, nil
200
151
  set :puma_service_unit_env_vars, []
201
- set :puma_phased_restart, false
202
152
 
203
153
  set :nginx_config_name, "#{fetch(:application)}_#{fetch(:stage)}"
204
154
  set :nginx_flags, 'fail_timeout=0'
@@ -11,13 +11,18 @@ module Capistrano
11
11
  end
12
12
 
13
13
  def set_defaults
14
- set_if_empty :puma_systemctl_bin, '/bin/systemctl'
14
+ set_if_empty :puma_systemctl_bin, -> { fetch(:systemctl_bin, '/bin/systemctl') }
15
15
  set_if_empty :puma_service_unit_name, -> { "puma_#{fetch(:application)}_#{fetch(:stage)}" }
16
16
  set_if_empty :puma_enable_socket_service, -> { false }
17
- set_if_empty :puma_systemctl_user, :system
18
- set_if_empty :puma_enable_lingering, -> { fetch(:puma_systemctl_user) != :system }
19
- set_if_empty :puma_lingering_user, -> { fetch(:user) }
20
17
  set_if_empty :puma_phased_restart, -> { false }
18
+
19
+ set_if_empty :puma_systemctl_user, -> { fetch(:systemctl_user, :user) }
20
+ set_if_empty :puma_enable_lingering, -> { fetch(:puma_systemctl_user) != :system }
21
+ set_if_empty :puma_lingering_user, -> { fetch(:lingering_user, fetch(:user)) }
22
+ set_if_empty :puma_access_log, -> { File.join(shared_path, 'log', "#{fetch(:puma_env)}.log") }
23
+ set_if_empty :puma_error_log, -> { File.join(shared_path, 'log', "#{fetch(:puma_env)}.log") }
24
+
25
+ set_if_empty :puma_service_templates_path, fetch(:service_templates_path, 'config/deploy/templates')
21
26
  end
22
27
 
23
28
  def expanded_bundle_command
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Capistrano
4
- PUMAVERSION = '5.2.0'
4
+ PUMAVERSION = '6.0.0.alpha.1'
5
5
  end
@@ -44,7 +44,7 @@ module Capistrano
44
44
  File.expand_path("../templates/#{from}.rb.erb", __FILE__)
45
45
  ].detect { |path| File.file?(path) }
46
46
  erb = File.read(file)
47
- StringIO.new(ERB.new(erb, nil, '-').result(binding))
47
+ StringIO.new(ERB.new(erb, trim_mode: '-').result(binding))
48
48
  end
49
49
 
50
50
  def template_puma(from, to, role)
@@ -94,31 +94,9 @@ module Capistrano
94
94
  class Puma < Capistrano::Plugin
95
95
  include PumaCommon
96
96
 
97
- def define_tasks
98
- eval_rakefile File.expand_path('../tasks/puma.rake', __FILE__)
99
- end
100
-
101
97
  def set_defaults
102
98
  set_if_empty :puma_role, :app
103
99
  set_if_empty :puma_env, -> { fetch(:rack_env, fetch(:rails_env, fetch(:stage))) }
104
- # Configure "min" to be the minimum number of threads to use to answer
105
- # requests and "max" the maximum.
106
- set_if_empty :puma_threads, [0, 16]
107
- set_if_empty :puma_workers, 0
108
- set_if_empty :puma_rackup, -> { File.join(current_path, 'config.ru') }
109
- set_if_empty :puma_state, -> { File.join(shared_path, 'tmp', 'pids', 'puma.state') }
110
- set_if_empty :puma_pid, -> { File.join(shared_path, 'tmp', 'pids', 'puma.pid') }
111
- set_if_empty :puma_bind, -> { File.join("unix://#{shared_path}", 'tmp', 'sockets', 'puma.sock') }
112
- set_if_empty :puma_control_app, false
113
- set_if_empty :puma_default_control_app, -> { File.join("unix://#{shared_path}", 'tmp', 'sockets', 'pumactl.sock') }
114
- set_if_empty :puma_conf, -> { File.join(shared_path, 'puma.rb') }
115
- set_if_empty :puma_access_log, -> { File.join(shared_path, 'log', 'puma_access.log') }
116
- set_if_empty :puma_error_log, -> { File.join(shared_path, 'log', 'puma_error.log') }
117
- set_if_empty :puma_init_active_record, false
118
- set_if_empty :puma_preload_app, false
119
- set_if_empty :puma_daemonize, false
120
- set_if_empty :puma_tag, ''
121
- set_if_empty :puma_restart_command, 'bundle exec puma'
122
100
 
123
101
  # Chruby, Rbenv and RVM integration
124
102
  append :chruby_map_bins, 'puma', 'pumactl'
@@ -128,38 +106,9 @@ module Capistrano
128
106
  # Bundler integration
129
107
  append :bundle_bins, 'puma', 'pumactl'
130
108
  end
131
-
132
- def register_hooks
133
- after 'deploy:check', 'puma:check'
134
- end
135
-
136
- def puma_workers
137
- fetch(:puma_workers, 0)
138
- end
139
-
140
- def puma_preload_app?
141
- fetch(:puma_preload_app)
142
- end
143
-
144
- def puma_daemonize?
145
- fetch(:puma_daemonize)
146
- end
147
-
148
- def puma_plugins
149
- Array(fetch(:puma_plugins)).collect do |bind|
150
- "plugin '#{bind}'"
151
- end.join("\n")
152
- end
153
-
154
- def upload_puma_rb(role)
155
- template_puma 'puma', fetch(:puma_conf), role
156
- end
157
109
  end
158
110
  end
159
111
 
160
- require 'capistrano/puma/workers'
161
- require 'capistrano/puma/daemon'
162
112
  require 'capistrano/puma/systemd'
163
113
  require 'capistrano/puma/monit'
164
- require 'capistrano/puma/jungle'
165
114
  require 'capistrano/puma/nginx'
@@ -3,76 +3,64 @@
3
3
  git_plugin = self
4
4
 
5
5
  namespace :puma do
6
- namespace :systemd do
7
- desc 'Config Puma systemd service'
8
- task :config do
9
- on roles(fetch(:puma_role)) do |role|
10
-
11
- upload_compiled_template = lambda do |template_name, unit_filename|
12
- git_plugin.template_puma template_name, "#{fetch(:tmp_dir)}/#{unit_filename}", role
13
- systemd_path = fetch(:puma_systemd_conf_dir, git_plugin.fetch_systemd_unit_path)
14
- if fetch(:puma_systemctl_user) == :system
15
- sudo "mv #{fetch(:tmp_dir)}/#{unit_filename} #{systemd_path}"
16
- else
17
- execute :mkdir, "-p", systemd_path
18
- execute :mv, "#{fetch(:tmp_dir)}/#{unit_filename}", "#{systemd_path}"
19
- end
6
+ desc 'Install Puma systemd service'
7
+ task :install do
8
+ on roles(fetch(:puma_role)) do |role|
9
+
10
+ upload_compiled_template = lambda do |template_name, unit_filename|
11
+ git_plugin.template_puma template_name, "#{fetch(:tmp_dir)}/#{unit_filename}", role
12
+ systemd_path = fetch(:puma_systemd_conf_dir, git_plugin.fetch_systemd_unit_path)
13
+ if fetch(:puma_systemctl_user) == :system
14
+ sudo "mv #{fetch(:tmp_dir)}/#{unit_filename} #{systemd_path}"
15
+ else
16
+ execute :mkdir, "-p", systemd_path
17
+ execute :mv, "#{fetch(:tmp_dir)}/#{unit_filename}", "#{systemd_path}"
20
18
  end
19
+ end
21
20
 
22
- upload_compiled_template.call("puma.service", "#{fetch(:puma_service_unit_name)}.service")
23
-
24
- if fetch(:puma_enable_socket_service)
25
- upload_compiled_template.call("puma.socket", "#{fetch(:puma_service_unit_name)}.socket")
26
- end
21
+ upload_compiled_template.call("puma.service", "#{fetch(:puma_service_unit_name)}.service")
27
22
 
28
- # Reload systemd
29
- git_plugin.execute_systemd("daemon-reload")
23
+ if fetch(:puma_enable_socket_service)
24
+ upload_compiled_template.call("puma.socket", "#{fetch(:puma_service_unit_name)}.socket")
30
25
  end
31
- end
32
26
 
33
- desc 'Generate service configuration locally'
34
- task :generate_config_locally do
35
- fake_role = Struct.new(:hostname)
36
- run_locally do
37
- File.write('puma.service', git_plugin.compiled_template_puma("puma.service", fake_role.new("example.com")).string)
38
- if fetch(:puma_enable_socket_service)
39
- File.write('puma.socket', git_plugin.compiled_template_puma("puma.socket", fake_role.new("example.com")).string)
40
- end
41
- end
27
+ # Reload systemd
28
+ git_plugin.execute_systemd("daemon-reload")
42
29
  end
30
+ end
43
31
 
44
- desc 'Enable Puma systemd service'
45
- task :enable do
46
- on roles(fetch(:puma_role)) do
47
- git_plugin.execute_systemd("enable", fetch(:puma_service_unit_name))
48
- git_plugin.execute_systemd("enable", fetch(:puma_service_unit_name) + ".socket") if fetch(:puma_enable_socket_service)
49
-
50
- if fetch(:puma_systemctl_user) != :system && fetch(:puma_enable_lingering)
51
- execute :loginctl, "enable-linger", fetch(:puma_lingering_user)
52
- end
32
+ desc 'Uninstall Puma systemd service'
33
+ task :uninstall do
34
+ invoke 'puma:disable'
35
+ on roles(fetch(:puma_role)) do |role|
36
+ systemd_path = fetch(:puma_systemd_conf_dir, git_plugin.fetch_systemd_unit_path)
37
+ if fetch(:puma_systemctl_user) == :system
38
+ sudo "rm -f #{systemd_path}/#{fetch(:puma_service_unit_name)}*"
39
+ else
40
+ execute :rm, "-f", "#{systemd_path}/#{fetch(:puma_service_unit_name)}*"
53
41
  end
42
+ git_plugin.execute_systemd("daemon-reload")
54
43
  end
55
44
 
56
- desc 'Disable Puma systemd service'
57
- task :disable do
58
- on roles(fetch(:puma_role)) do
59
- git_plugin.execute_systemd("disable", fetch(:puma_service_unit_name))
60
- git_plugin.execute_systemd("disable", fetch(:puma_service_unit_name) + ".socket") if fetch(:puma_enable_socket_service)
61
- end
62
- end
45
+ end
63
46
 
64
- desc 'Stop Puma socket via systemd'
65
- task :stop_socket do
66
- on roles(fetch(:puma_role)) do
67
- git_plugin.execute_systemd("stop", fetch(:puma_service_unit_name) + ".socket")
47
+ desc 'Enable Puma systemd service'
48
+ task :enable do
49
+ on roles(fetch(:puma_role)) do
50
+ git_plugin.execute_systemd("enable", fetch(:puma_service_unit_name))
51
+ git_plugin.execute_systemd("enable", fetch(:puma_service_unit_name) + ".socket") if fetch(:puma_enable_socket_service)
52
+
53
+ if fetch(:puma_systemctl_user) != :system && fetch(:puma_enable_lingering)
54
+ execute :loginctl, "enable-linger", fetch(:puma_lingering_user)
68
55
  end
69
56
  end
57
+ end
70
58
 
71
- desc 'Restart Puma socket via systemd'
72
- task :restart_socket do
73
- on roles(fetch(:puma_role)) do
74
- git_plugin.execute_systemd("restart", fetch(:puma_service_unit_name) + ".socket")
75
- end
59
+ desc 'Disable Puma systemd service'
60
+ task :disable do
61
+ on roles(fetch(:puma_role)) do
62
+ git_plugin.execute_systemd("disable", fetch(:puma_service_unit_name))
63
+ git_plugin.execute_systemd("disable", fetch(:puma_service_unit_name) + ".socket") if fetch(:puma_enable_socket_service)
76
64
  end
77
65
  end
78
66
 
@@ -90,6 +78,13 @@ namespace :puma do
90
78
  end
91
79
  end
92
80
 
81
+ desc 'Stop Puma socket via systemd'
82
+ task :stop_socket do
83
+ on roles(fetch(:puma_role)) do
84
+ git_plugin.execute_systemd("stop", fetch(:puma_service_unit_name) + ".socket")
85
+ end
86
+ end
87
+
93
88
  desc 'Restarts or reloads Puma service via systemd'
94
89
  task :smart_restart do
95
90
  if fetch(:puma_phased_restart)
@@ -106,16 +101,23 @@ namespace :puma do
106
101
  end
107
102
  end
108
103
 
104
+ desc 'Restart Puma socket via systemd'
105
+ task :restart_socket do
106
+ on roles(fetch(:puma_role)) do
107
+ git_plugin.execute_systemd("restart", fetch(:puma_service_unit_name) + ".socket")
108
+ end
109
+ end
110
+
109
111
  desc 'Reload Puma service via systemd'
110
112
  task :reload do
111
113
  on roles(fetch(:puma_role)) do
112
114
  service_ok = if fetch(:puma_systemctl_user) == :system
113
- execute("#{fetch(:puma_systemctl_bin)} status #{fetch(:puma_service_unit_name)} > /dev/null", raise_on_non_zero_exit: false)
114
- else
115
- execute("#{fetch(:puma_systemctl_bin)} --user status #{fetch(:puma_service_unit_name)} > /dev/null", raise_on_non_zero_exit: false)
116
- end
115
+ execute("#{fetch(:puma_systemctl_bin)} status #{fetch(:puma_service_unit_name)} > /dev/null", raise_on_non_zero_exit: false)
116
+ else
117
+ execute("#{fetch(:puma_systemctl_bin)} --user status #{fetch(:puma_service_unit_name)} > /dev/null", raise_on_non_zero_exit: false)
118
+ end
117
119
  cmd = 'reload'
118
- if !service_ok
120
+ unless service_ok
119
121
  cmd = 'restart'
120
122
  end
121
123
  if fetch(:puma_systemctl_user) == :system
@@ -1,28 +1,40 @@
1
+ # This file tells systemd how to run Puma as a 24/7 long-running daemon.
2
+ #
3
+ # Customize this file based on your bundler location, app directory, etc.
4
+ # Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu).
5
+ # Then run:
6
+ # - systemctl enable <%= fetch(:puma_service_unit_name) %>
7
+ # - systemctl {start,stop,restart} <%= fetch(:puma_service_unit_name) %>
8
+ #
9
+ #
10
+ # Use `journalctl -u <%= fetch(:puma_service_unit_name) %> -rn 100` to view the last 100 lines of log output.
11
+ #
1
12
  [Unit]
2
13
  Description=Puma HTTP Server for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
3
14
  After=network.target
4
15
  <%= "Requires=#{fetch(:puma_service_unit_name)}.socket" if fetch(:puma_enable_socket_service) %>
16
+ After=syslog.target network.target
5
17
 
6
18
  [Service]
7
19
  Type=simple
8
- <%="User=#{puma_user(@role)}" if fetch(:puma_systemctl_user) == :system %>
20
+ <%="User=#{puma_user(@role)}" if fetch(:puma_systemctl_user) == :system -%>
9
21
  WorkingDirectory=<%= current_path %>
10
22
  # Support older bundler versions where file descriptors weren't kept
11
23
  # See https://github.com/rubygems/rubygems/issues/3254
12
- ExecStart=<%= expanded_bundle_command %> exec --keep-file-descriptors puma -C <%= fetch(:puma_conf) %>
24
+ ExecStart=<%= expanded_bundle_command %> exec --keep-file-descriptors puma
13
25
  ExecReload=/bin/kill -USR1 $MAINPID
14
- StandardOutput=append:<%= fetch(:puma_access_log) %>
15
- StandardError=append:<%= fetch(:puma_error_log) %>
16
- <%="EnvironmentFile=#{fetch(:puma_service_unit_env_file)}" if fetch(:puma_service_unit_env_file) %>
17
26
 
27
+ <%="EnvironmentFile=#{fetch(:puma_service_unit_env_file)}" if fetch(:puma_service_unit_env_file) %>
18
28
  <% fetch(:puma_service_unit_env_vars, []).each do |environment_variable| %>
19
29
  <%="Environment=#{environment_variable}" %>
20
30
  <% end %>
21
-
22
- Restart=always
31
+ # if we crash, restart
23
32
  RestartSec=1
33
+ Restart=on-failure
24
34
 
25
- SyslogIdentifier=puma
35
+ <%="StandardOutput=append:#{fetch(:puma_access_log)}" if fetch(:puma_access_log) %>
36
+ <%="StandardError=append:#{fetch(:puma_error_log)}" if fetch(:puma_error_log) %>
26
37
 
38
+ SyslogIdentifier=<%= fetch(:puma_service_unit_name) %>
27
39
  [Install]
28
40
  WantedBy=<%=(fetch(:puma_systemctl_user) == :system) ? "multi-user.target" : "default.target"%>
@@ -3,5 +3,5 @@
3
3
  #
4
4
  check process <%= puma_monit_service_name %>
5
5
  with pidfile "<%= fetch(:puma_pid) %>"
6
- start program = "/usr/bin/sudo -iu <%= puma_user(@role) %> /bin/bash -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:puma] %> -C <%= fetch(:puma_conf) %> --daemon'"
6
+ start program = "/usr/bin/sudo -iu <%= puma_user(@role) %> /bin/bash -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:puma] %> %> --daemon'"
7
7
  stop program = "/usr/bin/sudo -iu <%= puma_user(@role) %> /bin/bash -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:pumactl] %> -S <%= fetch(:puma_state) %> stop'"
@@ -9,7 +9,6 @@ module Capistrano
9
9
  :banner => "path to templates"
10
10
 
11
11
  def copy_template
12
- copy_file "../../../../capistrano/templates/puma.rb.erb", "#{templates_path}/puma.rb.erb"
13
12
  copy_file "../../../../capistrano/templates/nginx_conf.erb", "#{templates_path}/nginx_conf.erb"
14
13
  # copy_file "puma.rb.erb", "#{templates_path}/puma.rb.erb"
15
14
  # copy_file "puma_init.erb", "#{templates_path}/puma_init.erb"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano3-puma
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 6.0.0.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-11 00:00:00.000000000 Z
11
+ date: 2022-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -44,7 +44,7 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '4.0'
47
+ version: '5.0'
48
48
  - - "<"
49
49
  - !ruby/object:Gem::Version
50
50
  version: '6.0'
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: '4.0'
57
+ version: '5.0'
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '6.0'
@@ -65,38 +65,23 @@ executables: []
65
65
  extensions: []
66
66
  extra_rdoc_files: []
67
67
  files:
68
- - ".github/workflows/stale.yml"
69
- - ".gitignore"
70
68
  - CHANGELOG.md
71
- - CONTRIBUTORS.md
72
- - Gemfile
73
69
  - LICENSE.txt
74
70
  - README.md
75
- - Rakefile
76
- - capistrano3-puma.gemspec
77
71
  - lib/capistrano/puma.rb
78
- - lib/capistrano/puma/daemon.rb
79
- - lib/capistrano/puma/jungle.rb
80
72
  - lib/capistrano/puma/monit.rb
81
73
  - lib/capistrano/puma/nginx.rb
82
74
  - lib/capistrano/puma/systemd.rb
83
75
  - lib/capistrano/puma/version.rb
84
- - lib/capistrano/puma/workers.rb
85
- - lib/capistrano/tasks/daemon.rake
86
- - lib/capistrano/tasks/jungle.rake
87
76
  - lib/capistrano/tasks/monit.rake
88
77
  - lib/capistrano/tasks/nginx.rake
89
- - lib/capistrano/tasks/puma.rake
90
78
  - lib/capistrano/tasks/systemd.rake
91
- - lib/capistrano/tasks/workers.rake
92
79
  - lib/capistrano/templates/nginx_conf.erb
93
80
  - lib/capistrano/templates/puma-deb.erb
94
81
  - lib/capistrano/templates/puma-rpm.erb
95
- - lib/capistrano/templates/puma.rb.erb
96
82
  - lib/capistrano/templates/puma.service.erb
97
83
  - lib/capistrano/templates/puma.socket.erb
98
84
  - lib/capistrano/templates/puma_monit.conf.erb
99
- - lib/capistrano/templates/run-puma.erb
100
85
  - lib/capistrano3-puma.rb
101
86
  - lib/generators/capistrano/nginx_puma/USAGE
102
87
  - lib/generators/capistrano/nginx_puma/config_generator.rb
@@ -104,8 +89,8 @@ homepage: https://github.com/seuros/capistrano-puma
104
89
  licenses:
105
90
  - MIT
106
91
  metadata: {}
107
- post_install_message: "\n All plugins need to be explicitly installed with install_plugin.\n
108
- \ Please see README.md\n "
92
+ post_install_message: "\n Version 6.0.0 is a major release. Please see README.md,
93
+ breaking changes are listed in CHANGELOG.md\n "
109
94
  rdoc_options: []
110
95
  require_paths:
111
96
  - lib
@@ -113,14 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
98
  requirements:
114
99
  - - ">="
115
100
  - !ruby/object:Gem::Version
116
- version: 1.9.3
101
+ version: '2.5'
117
102
  required_rubygems_version: !ruby/object:Gem::Requirement
118
103
  requirements:
119
- - - ">="
104
+ - - ">"
120
105
  - !ruby/object:Gem::Version
121
- version: '0'
106
+ version: 1.3.1
122
107
  requirements: []
123
- rubygems_version: 3.0.3
108
+ rubygems_version: 3.2.33
124
109
  signing_key:
125
110
  specification_version: 4
126
111
  summary: Puma integration for Capistrano
@@ -1,19 +0,0 @@
1
- name: Mark stale issues and pull requests
2
-
3
- on:
4
- schedule:
5
- - cron: "30 1 * * *"
6
-
7
- jobs:
8
- stale:
9
-
10
- runs-on: ubuntu-latest
11
-
12
- steps:
13
- - uses: actions/stale@v3
14
- with:
15
- repo-token: ${{ secrets.GITHUB_TOKEN }}
16
- stale-issue-message: 'Stale issue message'
17
- stale-pr-message: 'Stale pull request message'
18
- stale-issue-label: 'no-issue-activity'
19
- stale-pr-label: 'no-pr-activity'
data/.gitignore DELETED
@@ -1,18 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .idea
6
- .yardoc
7
- Gemfile.lock
8
- InstalledFiles
9
- _yardoc
10
- coverage
11
- doc/
12
- lib/bundler/man
13
- pkg
14
- rdoc
15
- spec/reports
16
- test/tmp
17
- test/version_tmp
18
- tmp
data/CONTRIBUTORS.md DELETED
@@ -1,48 +0,0 @@
1
- ## Contributors
2
-
3
- - Abdelkader Boudih
4
- - André Arko
5
- - Ariel Zerahia
6
- - Barack Obama
7
- - Bart de Water
8
- - Benjamin Kim
9
- - Bin Huang
10
- - Bryan Liles
11
- - Claudio Poli
12
- - Cyril Rohr
13
- - Fritz Lee
14
- - Feña Agar
15
- - Hnat Kubov
16
- - Ivan Schneider
17
- - James-Hendrickson
18
- - Jens Hausherr
19
- - Jeremy Rottman
20
- - Jesse Cooke
21
- - Johan Lind
22
- - Jordan Hollinger
23
- - Jun Lin
24
- - Kamil Giszczak
25
- - Kevin Collignon
26
- - Konstantin Papkovskiy
27
- - Kyle Decot
28
- - Lisa Hagemann
29
- - Lonre Wang
30
- - Lucas Alves
31
- - Marcos Chicote
32
- - Mario Celit log
33
- - Matias De Santi
34
- - Michael C. Beck
35
- - Neil Bartley
36
- - Philippe Nénert
37
- - Ponomarev Nikolay
38
- - Rafael Goulart
39
- - SHIMADA Koji
40
- - Sergey Ponomarev
41
- - Shane O'Grady
42
- - Simon Males
43
- - Steve Madere
44
- - Suhail Patel
45
- - Suraj Shirvankar
46
- - marshall-lee
47
- - ruohan chen
48
- - ayaya zhao
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in capistrano-puma.gemspec
4
- gemspec
5
-
6
- gem "bump", "~> 0.10.0"
7
-
8
- gem "github_changelog_generator", "~> 1.16"
data/Rakefile DELETED
@@ -1,9 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'github_changelog_generator/task'
3
-
4
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
5
- config.user = 'seuros'
6
- config.project = 'capistrano-puma'
7
- config.issues = false
8
- config.future_release = '5.2.0'
9
- end
@@ -1,28 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'capistrano/puma/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = 'capistrano3-puma'
8
- spec.version = Capistrano::PUMAVERSION
9
- spec.authors = ['Abdelkader Boudih']
10
- spec.email = ['Terminale@gmail.com']
11
- spec.description = %q{Puma integration for Capistrano 3}
12
- spec.summary = %q{Puma integration for Capistrano}
13
- spec.homepage = 'https://github.com/seuros/capistrano-puma'
14
- spec.license = 'MIT'
15
-
16
- spec.required_ruby_version = '>= 1.9.3'
17
-
18
- spec.files = `git ls-files`.split($/)
19
- spec.require_paths = ['lib']
20
-
21
- spec.add_dependency 'capistrano', '~> 3.7'
22
- spec.add_dependency 'capistrano-bundler'
23
- spec.add_dependency 'puma' , '>= 4.0', '< 6.0'
24
- spec.post_install_message = %q{
25
- All plugins need to be explicitly installed with install_plugin.
26
- Please see README.md
27
- }
28
- end
@@ -1,13 +0,0 @@
1
- module Capistrano
2
- class Puma::Daemon < Capistrano::Plugin
3
- include PumaCommon
4
-
5
- def register_hooks
6
- after 'deploy:finished', 'puma:smart_restart'
7
- end
8
-
9
- def define_tasks
10
- eval_rakefile File.expand_path('../../tasks/daemon.rake', __FILE__)
11
- end
12
- end
13
- end
@@ -1,22 +0,0 @@
1
- module Capistrano
2
- class Puma::Jungle < Capistrano::Plugin
3
- include PumaCommon
4
-
5
- def set_defaults
6
- set_if_empty :puma_jungle_conf, '/etc/puma.conf'
7
- set_if_empty :puma_run_path, '/usr/local/bin/run-puma'
8
- end
9
-
10
- def define_tasks
11
- eval_rakefile File.expand_path('../../tasks/jungle.rake', __FILE__)
12
- end
13
-
14
- def debian_install(role)
15
- template_puma 'puma-deb', "#{fetch(:tmp_dir)}/puma", role
16
- end
17
-
18
- def rhel_install(role)
19
- template_puma 'puma-rpm', "#{fetch(:tmp_dir)}/puma", role
20
- end
21
- end
22
- end
@@ -1,9 +0,0 @@
1
- module Capistrano
2
- class Puma::Workers < Capistrano::Plugin
3
- include PumaCommon
4
-
5
- def define_tasks
6
- eval_rakefile File.expand_path('../../tasks/workers.rake', __FILE__)
7
- end
8
- end
9
- end
@@ -1,74 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :puma do
4
- desc 'Start puma'
5
- task :start do
6
- on roles(fetch(:puma_role)) do |role|
7
- git_plugin.puma_switch_user(role) do
8
- if test "[ -f #{fetch(:puma_pid)} ]" and test :kill, "-0 $( cat #{fetch(:puma_pid)} )"
9
- info 'Puma is already running'
10
- else
11
- within current_path do
12
- with rack_env: fetch(:puma_env) do
13
- execute :puma, "-C #{fetch(:puma_conf)} --daemon"
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
21
- %w[halt stop status].map do |command|
22
- desc "#{command} puma"
23
- task command do
24
- on roles (fetch(:puma_role)) do |role|
25
- within current_path do
26
- git_plugin.puma_switch_user(role) do
27
- with rack_env: fetch(:puma_env) do
28
- if test "[ -f #{fetch(:puma_pid)} ]"
29
- if test :kill, "-0 $( cat #{fetch(:puma_pid)} )"
30
- execute :pumactl, "-S #{fetch(:puma_state)} -F #{fetch(:puma_conf)} #{command}"
31
- else
32
- # delete invalid pid file , process is not running.
33
- execute :rm, fetch(:puma_pid)
34
- end
35
- else
36
- #pid file not found, so puma is probably not running or it using another pidfile
37
- warn 'Puma not running'
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
45
-
46
- %w[phased-restart restart].map do |command|
47
- desc "#{command} puma"
48
- task command do
49
- on roles (fetch(:puma_role)) do |role|
50
- within current_path do
51
- git_plugin.puma_switch_user(role) do
52
- with rack_env: fetch(:puma_env) do
53
- if test "[ -f #{fetch(:puma_pid)} ]" and test :kill, "-0 $( cat #{fetch(:puma_pid)} )"
54
- # NOTE pid exist but state file is nonsense, so ignore that case
55
- execute :pumactl, "-S #{fetch(:puma_state)} -F #{fetch(:puma_conf)} #{command}"
56
- else
57
- # Puma is not running or state file is not present : Run it
58
- invoke 'puma:start'
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
65
- end
66
-
67
- task :smart_restart do
68
- if !fetch(:puma_preload_app) && fetch(:puma_workers, 0).to_i > 1
69
- invoke 'puma:phased-restart'
70
- else
71
- invoke 'puma:restart'
72
- end
73
- end
74
- end
@@ -1,65 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :puma do
4
- namespace :jungle do
5
- desc 'Install Puma jungle'
6
- task :install do
7
- on roles(fetch(:puma_role)) do |role|
8
- git_plugin.template_puma 'run-puma', "#{fetch(:tmp_dir)}/run-puma", role
9
- execute "chmod +x #{fetch(:tmp_dir)}/run-puma"
10
- sudo "mv #{fetch(:tmp_dir)}/run-puma #{fetch(:puma_run_path)}"
11
- if test '[ -f /etc/redhat-release ]'
12
- #RHEL flavor OS
13
- git_plugin.rhel_install(role)
14
- execute "chmod +x #{fetch(:tmp_dir)}/puma"
15
- sudo "mv #{fetch(:tmp_dir)}/puma /etc/init.d/puma"
16
- sudo 'chkconfig --add puma'
17
- elsif test '[ -f /etc/lsb-release ]'
18
- #Debian flavor OS
19
- git_plugin.debian_install(role)
20
- execute "chmod +x #{fetch(:tmp_dir)}/puma"
21
- sudo "mv #{fetch(:tmp_dir)}/puma /etc/init.d/puma"
22
- sudo 'update-rc.d -f puma defaults'
23
- else
24
- #Some other OS
25
- error 'This task is not supported for your OS'
26
- end
27
- sudo "touch #{fetch(:puma_jungle_conf)}"
28
- end
29
- end
30
-
31
- desc 'Setup Puma config and install jungle script'
32
- task :setup do
33
- invoke 'puma:config'
34
- invoke 'puma:jungle:install'
35
- invoke 'puma:jungle:add'
36
- end
37
-
38
- desc 'Add current project to the jungle'
39
- task :add do
40
- on roles(fetch(:puma_role)) do|role|
41
- begin
42
- sudo "/etc/init.d/puma add '#{current_path}' #{fetch(:puma_user, role.user)} '#{fetch(:puma_conf)}'"
43
- rescue => error
44
- warn error
45
- end
46
- end
47
- end
48
-
49
- desc 'Remove current project from the jungle'
50
- task :remove do
51
- on roles(fetch(:puma_role)) do
52
- sudo "/etc/init.d/puma remove '#{current_path}'"
53
- end
54
- end
55
-
56
- %w[start stop restart status].each do |command|
57
- desc "#{command} puma"
58
- task command do
59
- on roles(fetch(:puma_role)) do
60
- sudo "service puma #{command} #{current_path}"
61
- end
62
- end
63
- end
64
- end
65
- end
@@ -1,21 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :puma do
4
- desc 'Setup Puma config file'
5
- task :config do
6
- on roles(fetch(:puma_role)) do |role|
7
- git_plugin.upload_puma_rb(role)
8
- end
9
- end
10
-
11
- task :check do
12
- on roles(fetch(:puma_role)) do |role|
13
- #Create puma.rb for new deployments
14
- unless test "[ -f #{fetch(:puma_conf)} ]"
15
- warn 'puma.rb NOT FOUND!'
16
- git_plugin.upload_puma_rb(role)
17
- info 'puma.rb generated'
18
- end
19
- end
20
- end
21
- end
@@ -1,43 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :puma do
4
- namespace :workers do
5
- desc 'Add a worker'
6
- task :count do
7
- on roles(fetch(:puma_role)) do |role|
8
- git_plugin.puma_switch_user(role) do
9
- #TODO
10
- # cleanup
11
- # add host name/ip
12
- puma_pid = capture("cat #{fetch(:puma_pid)}")
13
- workers_count = capture("ps ax | grep -c 'puma: cluster worker [0-9]: #{puma_pid}'").to_i
14
- log "Workers count : #{workers_count}"
15
- end
16
- end
17
- end
18
-
19
- # TODO
20
- # Add/remove workers to specific host/s
21
- # Define # of workers to add/remove
22
- # Refactor
23
- desc 'Worker++'
24
- task :more do
25
- on roles(fetch(:puma_role)) do |role|
26
- git_plugin.puma_switch_user(role) do
27
- puma_pid = capture("cat #{fetch(:puma_pid)}")
28
- execute(:kill, "-TTIN #{puma_pid}")
29
- end
30
- end
31
- end
32
-
33
- desc 'Worker--'
34
- task :less do
35
- on roles(fetch(:puma_role)) do |role|
36
- git_plugin.puma_switch_user(role) do
37
- puma_pid = capture("cat #{fetch(:puma_pid)}")
38
- execute(:kill, "-TTOU #{puma_pid}")
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env puma
2
-
3
- directory '<%= current_path %>'
4
- rackup "<%=fetch(:puma_rackup)%>"
5
- environment '<%= fetch(:puma_env) %>'
6
- <% if fetch(:puma_tag) %>
7
- tag '<%= fetch(:puma_tag)%>'
8
- <% end %>
9
- pidfile "<%=fetch(:puma_pid)%>"
10
- state_path "<%=fetch(:puma_state)%>"
11
- stdout_redirect '<%=fetch(:puma_access_log)%>', '<%=fetch(:puma_error_log)%>', true
12
-
13
-
14
- threads <%=fetch(:puma_threads).join(',')%>
15
-
16
- <%= puma_plugins %>
17
-
18
- <%= puma_bind %>
19
- <% if fetch(:puma_control_app) %>
20
- activate_control_app "<%= fetch(:puma_default_control_app) %>"
21
- <% end %>
22
- workers <%= puma_workers %>
23
- <% if fetch(:puma_worker_timeout) %>
24
- worker_timeout <%= fetch(:puma_worker_timeout).to_i %>
25
- <% end %>
26
-
27
- <% if puma_daemonize? %>
28
- daemonize
29
- <% end %>
30
-
31
- restart_command '<%= fetch(:puma_restart_command) %>'
32
-
33
- <% if puma_preload_app? %>
34
- preload_app!
35
- <% else %>
36
- prune_bundler
37
- <% end %>
38
-
39
- on_restart do
40
- puts 'Refreshing Gemfile'
41
- ENV["BUNDLE_GEMFILE"] = "<%= fetch(:bundle_gemfile, "#{current_path}/Gemfile") %>"
42
- end
43
-
44
- <% if puma_preload_app? and fetch(:puma_init_active_record) %>
45
- before_fork do
46
- ActiveRecord::Base.connection_pool.disconnect!
47
- end
48
-
49
- on_worker_boot do
50
- ActiveSupport.on_load(:active_record) do
51
- ActiveRecord::Base.establish_connection
52
- end
53
- end
54
- <% end %>
@@ -1,20 +0,0 @@
1
- #!/bin/bash
2
-
3
- # source ENV variables manually
4
- . /etc/environment
5
- # on system boot, and root have no rbenv installed,
6
- # after start-stop-daemon switched to current user, we have to init rbenv
7
- if [ -d "$HOME/.rbenv/bin" ]; then
8
- PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
9
- eval "$(rbenv init -)"
10
- elif [ -d "/usr/local/rbenv/bin" ]; then
11
- PATH="/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH"
12
- eval "$(rbenv init -)"
13
- elif [ -f /usr/local/rvm/scripts/rvm ]; then
14
- source /etc/profile.d/rvm.sh
15
- elif [ -f "$HOME/.rvm/scripts/rvm" ]; then
16
- source "$HOME/.rvm/scripts/rvm"
17
- fi
18
-
19
- app=$1; config=$2; log=$3;
20
- cd $app && exec bundle exec puma -C $config 2>&1 >> $log