capistrano-pm2 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -10
- data/capistrano-pm2.gemspec +4 -4
- data/lib/capistrano/tasks/pm2.rake +55 -42
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 045f273a83e6ae8e68ad2497b7fd0efd72069ae4
|
4
|
+
data.tar.gz: 551fa9799c731e6e71a81731b76bd165ba9d941b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 053da5f4133f05a7b120d60dff2ae675733b4052b15b98b36355ac607f9646edb46b4aa41618c66cfdaf945128682a3fc4023143e4689f6eb520a5369a4562c1
|
7
|
+
data.tar.gz: a34b39ef9ae9ce2e56b1243f655cba0a3af0f0b95147da3cf01a4737614246293e24b3bde97442cb5f8d65da9aa92ec09c0777ee86bf9cc95aea3294b6e66dbd
|
data/README.md
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# capistrano-pm2
|
2
|
-
This is a pm2 handler for capistrano 3.x.
|
3
|
-
|
4
|
-
# Capistrano::pm2
|
1
|
+
# Capistrano::pm2 [![Gem Version](https://badge.fury.io/rb/capistrano-pm2.svg)](http://badge.fury.io/rb/capistrano-pm2)
|
5
2
|
|
6
3
|
nodejs [pm2](https://github.com/Unitech/pm2) support for Capistrano 3.x
|
7
4
|
|
@@ -47,20 +44,24 @@ end
|
|
47
44
|
|
48
45
|
Available Tasks
|
49
46
|
```ruby
|
47
|
+
cap pm2:delete # Delete pm2 application
|
48
|
+
cap pm2:list # Show pm2 application info
|
49
|
+
cap pm2:logs # Watch pm2 logs
|
50
50
|
cap pm2:restart # Restart app gracefully
|
51
|
-
cap pm2:
|
51
|
+
cap pm2:setup # Install pm2 via npm on the remote host
|
52
52
|
cap pm2:start # Start pm2 application
|
53
|
-
cap pm2:status #
|
53
|
+
cap pm2:status # List all pm2 applications
|
54
54
|
cap pm2:stop # Stop pm2 application
|
55
55
|
```
|
56
56
|
|
57
57
|
Configurable options:
|
58
|
-
|
59
58
|
```ruby
|
60
|
-
set :pm2_app_command, 'main'
|
59
|
+
set :pm2_app_command, 'main.js' # default, runs main.js
|
60
|
+
set :pm2_app_name, nil # app name for pm2, default cap :application
|
61
61
|
set :pm2_target_path, -> { release_path.join('subdir') } # default not set
|
62
|
-
set :pm2_roles, :all # default
|
63
|
-
set :pm2_env_variables, {} # default
|
62
|
+
set :pm2_roles, :all # default, cap roles to run on
|
63
|
+
set :pm2_env_variables, {} # default, env vars for pm2
|
64
|
+
set :pm2_start_params, '' # default, pm2 start params see http://pm2.keymetrics.io/docs/usage/quick-start/#cheat-sheet
|
64
65
|
```
|
65
66
|
|
66
67
|
## Contributing
|
data/capistrano-pm2.gemspec
CHANGED
@@ -4,15 +4,15 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'capistrano-pm2'
|
7
|
-
spec.version = '1.0.
|
7
|
+
spec.version = '1.0.2'
|
8
8
|
spec.authors = ['Tom Hanoldt']
|
9
9
|
spec.email = ['monotom@gmail.com']
|
10
|
-
spec.description =
|
11
|
-
spec.summary =
|
10
|
+
spec.description = 'nodejs pm2 support for Capistrano 3.x'
|
11
|
+
spec.summary = 'nodejs pm2 support for Capistrano 3.x'
|
12
12
|
spec.homepage = 'https://github.com/creative-workflow/capistrano-pm2'
|
13
13
|
spec.license = 'MIT'
|
14
14
|
|
15
|
-
spec.files = `git ls-files`.split(
|
15
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ['lib']
|
@@ -1,41 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
namespace :pm2 do
|
4
|
-
def app_status
|
5
|
-
within current_path do
|
6
|
-
ps = JSON.parse(capture :pm2, :jlist, fetch(:pm2_app_command))
|
7
|
-
|
8
|
-
return nil if ps.empty?
|
9
|
-
|
10
|
-
# status: online, errored, stopped
|
11
|
-
return ps[0]["pm2_env"]["status"]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def restart_app
|
16
|
-
within current_path do
|
17
|
-
execute :pm2, :restart, app_command_with_js_extension
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def app_command_with_js_extension
|
22
|
-
"#{app_command_without_js_extension}.js"
|
23
|
-
end
|
24
|
-
|
25
|
-
def app_command_without_js_extension
|
26
|
-
fetch(:pm2_app_command).sub(/\.js$/, '')
|
27
|
-
end
|
28
|
-
|
29
|
-
def run_task(*args)
|
30
|
-
on roles fetch(:pm2_roles) do
|
31
|
-
within fetch(:pm2_target_path, release_path) do
|
32
|
-
with fetch(:pm2_env_variables) do
|
33
|
-
execute *args
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
4
|
desc 'Restart app gracefully'
|
40
5
|
task :restart do
|
41
6
|
on roles fetch(:pm2_roles) do
|
@@ -58,30 +23,78 @@ namespace :pm2 do
|
|
58
23
|
|
59
24
|
before 'deploy:restart', 'pm2:restart'
|
60
25
|
|
61
|
-
desc '
|
26
|
+
desc 'List all pm2 applications'
|
62
27
|
task :status do
|
63
|
-
run_task :pm2, :
|
28
|
+
run_task :pm2, :list
|
64
29
|
end
|
65
30
|
|
66
31
|
desc 'Start pm2 application'
|
67
32
|
task :start do
|
68
|
-
run_task :pm2, :start,
|
33
|
+
run_task :pm2, :start, fetch(:pm2_app_command), "--name #{app_name} #{fetch(:pm2_start_params)}"
|
69
34
|
end
|
70
35
|
|
71
36
|
desc 'Stop pm2 application'
|
72
37
|
task :stop do
|
73
|
-
run_task :pm2, :stop,
|
38
|
+
run_task :pm2, :stop, app_name
|
39
|
+
end
|
40
|
+
|
41
|
+
desc 'Delete pm2 application'
|
42
|
+
task :delete do
|
43
|
+
run_task :pm2, :delete, app_name
|
74
44
|
end
|
75
45
|
|
76
46
|
desc 'Show pm2 application info'
|
77
|
-
task :
|
78
|
-
run_task :pm2, :show,
|
47
|
+
task :list do
|
48
|
+
run_task :pm2, :show, app_name
|
49
|
+
end
|
50
|
+
|
51
|
+
desc 'Watch pm2 logs'
|
52
|
+
task :logs do
|
53
|
+
run_task :pm2, :logs
|
54
|
+
end
|
55
|
+
|
56
|
+
desc 'Install pm2 via npm on the remote host'
|
57
|
+
task :setup do
|
58
|
+
run_task :npm, :install, 'pm2 -g'
|
59
|
+
end
|
60
|
+
|
61
|
+
def app_name
|
62
|
+
fetch(:pm2_app_name) || fetch(:application)
|
63
|
+
end
|
64
|
+
|
65
|
+
def app_status
|
66
|
+
within current_path do
|
67
|
+
ps = JSON.parse(capture :pm2, :jlist, app_name)
|
68
|
+
|
69
|
+
return nil if ps.empty?
|
70
|
+
|
71
|
+
# status: online, errored, stopped
|
72
|
+
return ps[0]["pm2_env"]["status"]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def restart_app
|
77
|
+
within current_path do
|
78
|
+
execute :pm2, :restart, app_name
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def run_task(*args)
|
83
|
+
on roles fetch(:pm2_roles) do
|
84
|
+
within fetch(:pm2_target_path, release_path) do
|
85
|
+
with fetch(:pm2_env_variables) do
|
86
|
+
execute *args
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
79
90
|
end
|
80
91
|
end
|
81
92
|
|
82
93
|
namespace :load do
|
83
94
|
task :defaults do
|
84
|
-
set :pm2_app_command, 'main'
|
95
|
+
set :pm2_app_command, 'main.js'
|
96
|
+
set :pm2_app_name, nil
|
97
|
+
set :pm2_start_params, ''
|
85
98
|
set :pm2_roles, :all
|
86
99
|
set :pm2_env_variables, {}
|
87
100
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-pm2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Hanoldt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|