h2ocube_rails_puma 0.0.7 → 0.1.0
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 +4 -4
- data/.gitignore +2 -0
- data/README.md +6 -15
- data/h2ocube_rails_puma.gemspec +3 -1
- data/lib/generators/h2ocube_rails_puma_generator.rb +2 -2
- data/lib/generators/source/puma.rb.erb +57 -2
- metadata +32 -5
- data/lib/capistrano/puma.rb +0 -1
- data/lib/capistrano/tasks/puma.cap +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da3bb6f5824867cf585d7a261927049dddc19cef
|
4
|
+
data.tar.gz: cc732dec6ae17683fc68d6944fe1f68cb3703be2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d510bda50ff4721cab33d6741e5f0bcce610fe3e85b02f6ecc10fe8d28a12e61878a1add68db7ec6ef8296de810fbe9f6045dbc4e0d307acf8b9798bb611121
|
7
|
+
data.tar.gz: ce13bd9124817d603b1e1e2379064eeb7e9c7a4bd3f2fecb140b9a99366912e1369c7fc2db8798a3ed019f53e8ebea890bbb8cef90949e1c1a8a7525262e44fc
|
data/.gitignore
ADDED
data/README.md
CHANGED
@@ -8,7 +8,7 @@ Puma helper.
|
|
8
8
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
|
-
gem 'h2ocube_rails_puma'
|
11
|
+
gem 'h2ocube_rails_puma'
|
12
12
|
|
13
13
|
And then execute:
|
14
14
|
|
@@ -20,31 +20,19 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
# generate config/puma.rb
|
23
|
+
# generate config/deploy/templates/puma.rb.erb
|
24
24
|
rails g h2ocube_rails_puma
|
25
25
|
|
26
26
|
# Capfile
|
27
27
|
require 'capistrano/puma'
|
28
28
|
|
29
|
-
# deploy.rb
|
30
|
-
set :puma_rb, 'config/puma.rb'
|
31
|
-
set :puma_threads, '0:16'
|
32
|
-
set :puma_workers, '2'
|
33
|
-
|
34
|
-
Puma specific tasks for Capistrano v3:
|
35
|
-
|
36
|
-
cap puma:start
|
37
|
-
cap puma:stop
|
38
|
-
cap puma:restart
|
39
|
-
cap puma:phased_restart
|
40
|
-
cap puma:cold_restart
|
41
|
-
|
42
29
|
# nginx.conf
|
43
30
|
upstream app {
|
44
31
|
server unix:/root/app/shared/sockets/puma.sock fail_timeout=0;
|
45
32
|
}
|
46
33
|
server {
|
47
34
|
listen 80;
|
35
|
+
listen [::]:80;
|
48
36
|
server_name app.com;
|
49
37
|
root /root/app/current/public;
|
50
38
|
location / {
|
@@ -58,6 +46,7 @@ Puma specific tasks for Capistrano v3:
|
|
58
46
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
59
47
|
proxy_set_header Host $http_host;
|
60
48
|
proxy_set_header X-UA-Compatible IE=edge,chrome=1;
|
49
|
+
proxy_http_version 1.1;
|
61
50
|
proxy_redirect off;
|
62
51
|
proxy_pass http://app;
|
63
52
|
}
|
@@ -66,6 +55,8 @@ Puma specific tasks for Capistrano v3:
|
|
66
55
|
## Include
|
67
56
|
|
68
57
|
* puma https://github.com/puma/puma
|
58
|
+
* puma_worker_killer https://github.com/schneems/puma_worker_killer
|
59
|
+
* capistrano3-puma https://github.com/seuros/capistrano-puma
|
69
60
|
|
70
61
|
## Contributing
|
71
62
|
|
data/h2ocube_rails_puma.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'h2ocube_rails_puma'
|
7
|
-
spec.version = '0.0
|
7
|
+
spec.version = '0.1.0'
|
8
8
|
spec.authors = ['Ben']
|
9
9
|
spec.email = ['ben@zfben.com']
|
10
10
|
spec.description = 'Puma plugin for Rails and Capistrano'
|
@@ -18,4 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
20
|
spec.add_dependency 'puma'
|
21
|
+
spec.add_dependency 'puma_worker_killer'
|
22
|
+
spec.add_dependency 'capistrano3-puma'
|
21
23
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
class H2ocubeRailsPumaGenerator < Rails::Generators::Base
|
2
2
|
source_root File.expand_path('../source', __FILE__)
|
3
3
|
|
4
|
-
desc 'Creates
|
4
|
+
desc 'Creates puma.rb.erb to your config/deploy/templates/.'
|
5
5
|
|
6
6
|
def copy_puma_rb
|
7
|
-
|
7
|
+
copy_file 'puma.rb.erb', 'config/deploy/templates/puma.rb.erb'
|
8
8
|
end
|
9
9
|
end
|
@@ -1,11 +1,66 @@
|
|
1
|
-
|
1
|
+
#!/usr/bin/env puma
|
2
2
|
|
3
|
-
|
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
|
4
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
|
+
<% if puma_preload_app? %>
|
5
32
|
preload_app!
|
33
|
+
<% else %>
|
34
|
+
prune_bundler
|
35
|
+
<% end %>
|
36
|
+
|
37
|
+
on_restart do
|
38
|
+
puts 'Refreshing Gemfile'
|
39
|
+
ENV["BUNDLE_GEMFILE"] = "<%= fetch(:bundle_gemfile, "#{current_path}/Gemfile") %>"
|
40
|
+
end
|
41
|
+
|
42
|
+
<% if puma_preload_app? and fetch(:puma_init_active_record) %>
|
43
|
+
before_fork do
|
44
|
+
ActiveRecord::Base.connection_pool.disconnect!
|
45
|
+
|
46
|
+
if RUBY_PLATFORM.match?(/linux/)
|
47
|
+
require 'puma_worker_killer'
|
48
|
+
|
49
|
+
PumaWorkerKiller.config do |config|
|
50
|
+
config.ram = (`free`.lines.to_a[1].split[1].to_i / 1024).to_i
|
51
|
+
config.frequency = 30
|
52
|
+
config.percent_usage = 0.5
|
53
|
+
config.rolling_restart_frequency = 8 * 3600
|
54
|
+
config.reaper_status_logs = true
|
55
|
+
end
|
56
|
+
|
57
|
+
PumaWorkerKiller.start
|
58
|
+
end
|
59
|
+
end
|
6
60
|
|
7
61
|
on_worker_boot do
|
8
62
|
ActiveSupport.on_load(:active_record) do
|
9
63
|
ActiveRecord::Base.establish_connection
|
10
64
|
end
|
11
65
|
end
|
66
|
+
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: h2ocube_rails_puma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puma
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: puma_worker_killer
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: capistrano3-puma
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
description: Puma plugin for Rails and Capistrano
|
28
56
|
email:
|
29
57
|
- ben@zfben.com
|
@@ -32,14 +60,13 @@ extensions: []
|
|
32
60
|
extra_rdoc_files: []
|
33
61
|
files:
|
34
62
|
- ".bundle/install.log"
|
63
|
+
- ".gitignore"
|
35
64
|
- Gemfile
|
36
65
|
- Gemfile.lock
|
37
66
|
- LICENSE.txt
|
38
67
|
- README.md
|
39
68
|
- Rakefile
|
40
69
|
- h2ocube_rails_puma.gemspec
|
41
|
-
- lib/capistrano/puma.rb
|
42
|
-
- lib/capistrano/tasks/puma.cap
|
43
70
|
- lib/generators/h2ocube_rails_puma_generator.rb
|
44
71
|
- lib/generators/source/puma.rb.erb
|
45
72
|
- lib/h2ocube_rails_puma.rb
|
@@ -63,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
90
|
version: '0'
|
64
91
|
requirements: []
|
65
92
|
rubyforge_project:
|
66
|
-
rubygems_version: 2.
|
93
|
+
rubygems_version: 2.6.8
|
67
94
|
signing_key:
|
68
95
|
specification_version: 4
|
69
96
|
summary: Puma plugin for Rails and Capistrano
|
data/lib/capistrano/puma.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
load File.expand_path('../tasks/puma.cap', __FILE__)
|
@@ -1,54 +0,0 @@
|
|
1
|
-
set :puma_rb, 'config/puma.rb'
|
2
|
-
set :puma_threads, '0:16'
|
3
|
-
set :puma_workers, '2'
|
4
|
-
|
5
|
-
namespace :puma do
|
6
|
-
desc 'Start puma'
|
7
|
-
task :start do
|
8
|
-
on roles :app do
|
9
|
-
within release_path do
|
10
|
-
execute :bundle, "exec puma -C #{fetch :puma_rb} -b 'unix://#{shared_path}/sockets/puma.sock' -t #{fetch :puma_threads} -w #{fetch :puma_workers} --pidfile #{shared_path}/pids/puma.pid -S #{state_path} -e #{fetch :stage} -d"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
desc 'Stop puma'
|
16
|
-
task :stop do
|
17
|
-
on roles :app do
|
18
|
-
within release_path do
|
19
|
-
execute :bundle, "exec pumactl -S #{state_path} stop;true"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
desc 'Restart puma'
|
25
|
-
task :restart do
|
26
|
-
on roles :app do
|
27
|
-
within release_path do
|
28
|
-
execute :bundle, "exec pumactl -S #{state_path} restart;true"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
desc 'Phased restart puma'
|
34
|
-
task :phased_restart do
|
35
|
-
on roles :app do
|
36
|
-
within release_path do
|
37
|
-
execute :bundle, "exec pumactl -S #{state_path} phased-restart;true"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
desc 'Cold Restart puma'
|
43
|
-
task :cold_restart do
|
44
|
-
invoke 'puma:stop'
|
45
|
-
sleep 1
|
46
|
-
invoke 'puma:start'
|
47
|
-
end
|
48
|
-
|
49
|
-
def state_path
|
50
|
-
"#{shared_path}/sockets/puma.state"
|
51
|
-
end
|
52
|
-
|
53
|
-
before 'deploy:published', 'puma:cold_restart'
|
54
|
-
end
|