capistrano-runit-puma 0.1.0 → 0.2.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/README.md +6 -6
- data/capistrano-runit-puma.gemspec +2 -2
- data/lib/capistrano/tasks/puma.rake +31 -23
- data/lib/capistrano/templates/puma.rb.erb +11 -6
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a59229ab3e25b6c7ffaa1d6e5e822a845b70aef1
|
4
|
+
data.tar.gz: 47293eaac0eca5bd6d54f6b4b5d3967538670c36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 955cade143980d9bc9c19e8de9e0bc17a02d9b94ac1f553f5aef2d111d51df4d5ead397d9bbfeb33358c27b9a44010f7924e7ddc0c68370da88e04799b609495
|
7
|
+
data.tar.gz: 331e0c7c266ffb4f2a0d94c14cf9953660760fd7253c7587dc6219dec006eec1bd2295179bae0ed6741f94cab34d88feb2ea004f6621f35d5d93df88145a18a0
|
data/README.md
CHANGED
@@ -39,19 +39,19 @@ require 'capistrano/runit/puma'
|
|
39
39
|
* `runit_puma_role` -- what host roles uses runit to run puma. Default value: `:app`
|
40
40
|
* `runit_puma_default_hooks` -- run default hooks for runit puma or not. Default value: `true`.
|
41
41
|
* `runit_puma_run_template` -- path to ERB template of `run` file. Default value: `nil`.
|
42
|
-
* `runit_puma_workers` -- number of puma workers. Default value:
|
42
|
+
* `runit_puma_workers` -- number of puma workers. Default value: 0.
|
43
43
|
* `runit_puma_threads_min` -- minimal threads to use. Default value: 0.
|
44
44
|
* `runit_puma_threads_max` -- maximal threads to use. Default value: 16.
|
45
|
-
* `runit_puma_bind` -- bind URI. Examples: tcp://127.0.0.1:8080, unix:///tmp/puma.sock. Default value: nil.
|
45
|
+
* `runit_puma_bind` -- bind URI. Examples: tcp://127.0.0.1:8080, unix:///tmp/puma.sock. It can be set per server. Default value: nil.
|
46
46
|
* `runit_puma_rackup` -- Path to application's rackup file. Default value: `File.join(current_path, 'config.ru')`
|
47
47
|
* `runit_puma_state` -- Path to puma's state file. Default value: `File.join(shared_path, 'tmp', 'pids', 'puma.state')`
|
48
48
|
* `runit_puma_pid` -- Path to pid file. Default value: `File.join(shared_path, 'tmp', 'pids', 'puma.pid')`
|
49
|
-
* `runit_puma_bind` -- Puma's bind string. Default value: `File.join('unix://', shared_path, 'tmp', 'sockets', 'puma.sock')`
|
50
49
|
* `runit_puma_conf` -- Path to puma's config file. Default value: `File.join(shared_path, 'puma.rb')`
|
51
|
-
* `
|
52
|
-
* `runit_puma_error_log` -- Path to puma's error log. Default value: `File.join(shared_path, 'log', 'puma_access.log')`
|
50
|
+
* `runit_puma_log` -- path to puma's log (stdout/stderr combined). Default value: `File.join(shared_path, 'log', 'puma.log')`
|
53
51
|
* `runit_puma_init_active_record` -- Enable or not establish ActiveRecord connection. Default value: `false`
|
54
|
-
* `runit_puma_preload_app` -- Preload application. Default value: `
|
52
|
+
* `runit_puma_preload_app` -- Preload application. Default value: `false`
|
53
|
+
* `runit_puma_restart_method` -- One of following methods: `:restart` (default), `:force_restart`, `:phased_restart`.
|
54
|
+
* `runit_puma_on_worker_boot` -- Custom `on_worker_boot`code as string. Default value: nil.
|
55
55
|
|
56
56
|
## Contributing
|
57
57
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "capistrano-runit-puma"
|
5
|
-
spec.version = '0.
|
5
|
+
spec.version = '0.2.0'
|
6
6
|
spec.author = ['Oleksandr Simonov', 'Anton Ageev']
|
7
7
|
spec.email = ['alex@simonov.me', 'antage@gmail.com']
|
8
8
|
spec.summary = %q{Capistrano3 tasks for manage puma via runit supervisor.}
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.files = `git ls-files -z`.split("\x0")
|
14
14
|
spec.require_paths = ["lib"]
|
15
15
|
|
16
|
-
spec.add_runtime_dependency 'capistrano-runit-core', '~> 0.
|
16
|
+
spec.add_runtime_dependency 'capistrano-runit-core', '~> 0.2.0'
|
17
17
|
spec.add_development_dependency "bundler", "~> 1.6"
|
18
18
|
spec.add_development_dependency "rake"
|
19
19
|
end
|
@@ -5,8 +5,7 @@ namespace :load do
|
|
5
5
|
task :defaults do
|
6
6
|
set :runit_puma_role, -> { :app }
|
7
7
|
set :runit_puma_default_hooks, -> { true }
|
8
|
-
set :
|
9
|
-
set :runit_puma_workers, 1
|
8
|
+
set :runit_puma_workers, 0
|
10
9
|
set :runit_puma_threads_min, 0
|
11
10
|
set :runit_puma_threads_max, 16
|
12
11
|
set :runit_puma_rackup, -> { File.join(current_path, 'config.ru') }
|
@@ -15,13 +14,14 @@ namespace :load do
|
|
15
14
|
set :runit_puma_bind, -> { File.join('unix://', shared_path, 'tmp', 'sockets', 'puma.sock') }
|
16
15
|
set :runit_puma_conf, -> { File.join(shared_path, 'puma.rb') }
|
17
16
|
set :runit_puma_conf_in_repo, -> { false }
|
18
|
-
set :
|
19
|
-
set :runit_puma_error_log, -> { File.join(shared_path, 'log', 'puma_error.log') }
|
17
|
+
set :runit_puma_log, -> { File.join(shared_path, 'log', 'puma.log') }
|
20
18
|
set :runit_puma_init_active_record, false
|
21
|
-
set :runit_puma_preload_app,
|
19
|
+
set :runit_puma_preload_app, false
|
20
|
+
set :runit_puma_restart_method, :restart
|
21
|
+
set :runit_puma_on_worker_boot, nil
|
22
22
|
# Rbenv and RVM integration
|
23
|
-
set :rbenv_map_bins, fetch(:rbenv_map_bins).to_a.concat(%w(puma
|
24
|
-
set :rvm_map_bins, fetch(:rvm_map_bins).to_a.concat(%w(puma
|
23
|
+
set :rbenv_map_bins, fetch(:rbenv_map_bins).to_a.concat(%w(puma))
|
24
|
+
set :rvm_map_bins, fetch(:rvm_map_bins).to_a.concat(%w(puma))
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -55,8 +55,13 @@ namespace :runit do
|
|
55
55
|
array.compact.join(' ')
|
56
56
|
end
|
57
57
|
|
58
|
-
def create_puma_default_conf
|
59
|
-
|
58
|
+
def create_puma_default_conf(host)
|
59
|
+
info 'Create or overwrite puma.rb'
|
60
|
+
# requirements
|
61
|
+
if host.fetch(:runit_puma_bind).nil? && fetch(:runit_puma_bind).nil?
|
62
|
+
$stderr.puts "You should set 'runit_puma_bind' variable globally or for host #{host.hostname}."
|
63
|
+
exit 1
|
64
|
+
end
|
60
65
|
path = File.expand_path('../../templates/puma.rb.erb', __FILE__)
|
61
66
|
if File.file?(path)
|
62
67
|
template = ERB.new(File.read(path))
|
@@ -68,16 +73,26 @@ namespace :runit do
|
|
68
73
|
|
69
74
|
task :add_default_hooks do
|
70
75
|
after 'deploy:check', 'runit:puma:check'
|
71
|
-
|
76
|
+
case fetch(:runit_puma_restart_method)
|
77
|
+
when :restart
|
78
|
+
after 'deploy:published', 'runit:puma:restart'
|
79
|
+
when :force_restart
|
80
|
+
after 'deploy:published', 'runit:puma:force_restart'
|
81
|
+
when :phased_restart
|
82
|
+
after 'deploy:published', 'runit:puma:phased_restart'
|
83
|
+
else
|
84
|
+
$stderr.puts 'Unknown restart method in runit_puma_restart_method variable. Allowed methods: :restart, :force_restart, :phased_restart.'
|
85
|
+
exit 1
|
86
|
+
end
|
72
87
|
end
|
73
88
|
|
74
89
|
task :check do
|
75
90
|
check_service('puma')
|
76
|
-
on roles fetch(:runit_puma_role) do
|
91
|
+
on roles fetch(:runit_puma_role) do |host|
|
77
92
|
if test "[ -d #{puma_enabled_service_dir} ]"
|
78
93
|
# Create puma.rb for new deployments if not in repo
|
79
|
-
if !fetch(:runit_puma_conf_in_repo)
|
80
|
-
create_puma_default_conf
|
94
|
+
if !fetch(:runit_puma_conf_in_repo)
|
95
|
+
create_puma_default_conf(host)
|
81
96
|
end
|
82
97
|
else
|
83
98
|
error "Puma runit service isn't enabled."
|
@@ -87,12 +102,7 @@ namespace :runit do
|
|
87
102
|
|
88
103
|
desc 'Setup puma runit service'
|
89
104
|
task :setup do
|
90
|
-
|
91
|
-
if fetch(:runit_puma_bind).nil?
|
92
|
-
$stderr.puts "You should set 'runit_puma_bind' variable."
|
93
|
-
exit 1
|
94
|
-
end
|
95
|
-
setup_service('puma', collect_sidekiq_run_command)
|
105
|
+
setup_service('puma', collect_puma_run_command)
|
96
106
|
end
|
97
107
|
|
98
108
|
desc 'Enable puma runit service'
|
@@ -120,16 +130,14 @@ namespace :runit do
|
|
120
130
|
on roles fetch(:runit_puma_role) do
|
121
131
|
if test "[ -d #{puma_enabled_service_dir} ]"
|
122
132
|
if test("[ -f #{fetch(:runit_puma_pid)} ]") && test("kill -0 $( cat #{fetch(:runit_puma_pid)} )")
|
123
|
-
|
124
|
-
execute :bundle, :exec, :pumactl, "-S #{fetch(:runit_puma_state)} restart"
|
125
|
-
end
|
133
|
+
runit_execute_command('puma', '2')
|
126
134
|
else
|
127
135
|
info 'Puma is not running'
|
128
136
|
if test("[ -f #{fetch(:runit_puma_pid)} ]")
|
129
137
|
info 'Removing broken pid file'
|
130
138
|
execute :rm, '-f', fetch(:runit_puma_pid)
|
131
139
|
end
|
132
|
-
|
140
|
+
runit_execute_command('puma', 'start')
|
133
141
|
end
|
134
142
|
else
|
135
143
|
error "Puma runit service isn't enabled."
|
@@ -4,11 +4,11 @@ daemonize false
|
|
4
4
|
quiet
|
5
5
|
pidfile '<%= fetch(:runit_puma_pid)%>'
|
6
6
|
state_path '<%= fetch(:runit_puma_state)%>'
|
7
|
-
stdout_redirect '<%= fetch(:
|
7
|
+
stdout_redirect '<%= fetch(:runit_puma_log)%>', '<%= fetch(:runit_puma_log)%>', true
|
8
8
|
|
9
9
|
workers <%= fetch(:runit_puma_workers, 1) %>
|
10
10
|
threads <%= fetch(:runit_puma_threads_min, 0) %>, <%= fetch(:runit_puma_threads_max, 16) %>
|
11
|
-
bind "<%= fetch(:runit_puma_bind) %>"
|
11
|
+
bind "<%= host.fetch(:runit_puma_bind) or fetch(:runit_puma_bind) %>"
|
12
12
|
|
13
13
|
<% if fetch(:runit_puma_preload_app) %>
|
14
14
|
preload_app!
|
@@ -19,10 +19,15 @@ on_restart do
|
|
19
19
|
ENV["BUNDLE_GEMFILE"] = "<%= fetch(:bundle_gemfile, "#{current_path}/Gemfile") %>"
|
20
20
|
end
|
21
21
|
|
22
|
+
<% if fetch(:runit_puma_init_active_record) %>
|
22
23
|
on_worker_boot do
|
23
|
-
|
24
|
-
|
25
|
-
ActiveRecord::Base.establish_connection
|
24
|
+
::ActiveSupport.on_load(:active_record) do
|
25
|
+
::ActiveRecord::Base.establish_connection
|
26
26
|
end
|
27
|
-
<% end %>
|
28
27
|
end
|
28
|
+
<% end %>
|
29
|
+
<% unless fetch(:runit_puma_on_worker_boot, nil).nil? %>
|
30
|
+
on_worker_boot do
|
31
|
+
<%= fetch(:runit_puma_on_worker_boot) %>
|
32
|
+
end
|
33
|
+
<% end %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-runit-puma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleksandr Simonov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano-runit-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.2.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.2.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,8 +91,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
version: '0'
|
92
92
|
requirements: []
|
93
93
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
94
|
+
rubygems_version: 2.4.6
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Capistrano3 tasks for manage puma via runit supervisor.
|
98
98
|
test_files: []
|
99
|
+
has_rdoc:
|