capistrano-foreman_export 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef81705c7a150367ed8dc5ec5cdc348c189bb8e3
4
- data.tar.gz: 4c17528f1861a2987a22e5c39d223cef11f7c95b
3
+ metadata.gz: a32b5831060171a13676cebb8c9821a936dd7743
4
+ data.tar.gz: 86459ab84ed2e216f282eadcb7c47fb52f3ed84a
5
5
  SHA512:
6
- metadata.gz: 9ab0eed418a5fb34d6a78e3d02006db6642e437d9c64cae41638eb1779e7302adec2f13c2fc3d48d0fa39c58110b4b396bd182238eedd481ec20df79b544507f
7
- data.tar.gz: ef50c02950ee766bdd60212ebdc8377257be3d0f795975df78c7933ee1851b70e8f66a000cbe576f10a9ec3306f59cb0d92abab7ef16184b6fa639b6b000f357
6
+ metadata.gz: 1b50d9e49dbc8681bc8f7ed808135fd8b53d1fab4b8b2cd8890dce1819b1933a0e9215009c8e1e67022fdd91df6ce8552d60fb6a690c104acb0f366f8f876093
7
+ data.tar.gz: 40c75b76617f00a507e42fa10e0ce77cc4285cf11ac9e8558511956196a7a81aac4ecf8d7de39a3a08a0a44bc999dab971e007530cbe22e116839896ae46ec62
@@ -1,44 +1,53 @@
1
1
 
2
+ require 'capistrano/configuration'
3
+
4
+
2
5
  module Capistrano
3
6
  module ForemanExport
4
7
  module Backend
5
8
  class Supervisord
6
9
 
10
+ def initialize(task)
11
+ @task = task
12
+ end
13
+
7
14
  def name
8
15
  "supervisord"
9
16
  end
10
17
 
11
- def start_cmd(app_name)
12
- wrap_bash <<-CMD
13
- #{shell_add_if_new(app_name)}
14
- supervisorctl start #{app_name}:*
15
- CMD
18
+ def app_name
19
+ @task.fetch(:foreman_app)
16
20
  end
17
21
 
18
- def stop_cmd(app_name)
19
- wrap_bash <<-CMD
20
- supervisorctl stop #{app_name}:*
21
- CMD
22
+ def start_cmd
23
+ add_or_update_app
24
+ @task.execute(:sudo, "supervisorctl start #{app_name}:*")
22
25
  end
23
26
 
24
- def restart_cmd(app_name)
25
- wrap_bash <<-CMD
26
- #{shell_add_if_new(app_name)}
27
- supervisorctl restart #{app_name}:*
28
- CMD
27
+ def stop_cmd
28
+ @task.execute(:sudo, "supervisorctl stop #{app_name}:*")
29
29
  end
30
30
 
31
- def shell_add_if_new(app_name)
32
- "supervisorctl reread; sleep 3; supervisorctl status | grep -w -- '#{app_name}' | grep -qv grep || supervisorctl add #{app_name}"
31
+ def restart_cmd
32
+ add_or_update_app
33
+ @task.execute(:sudo, "supervisorctl restart #{app_name}:*")
33
34
  end
34
35
 
35
- def wrap_bash(cmd)
36
- "/bin/bash -c \"#{undent(cmd)}\""
36
+ def add_or_update_app
37
+ status = supervisord_reread
38
+ if status.include?("#{app_name}:")
39
+ if status.include?('changed')
40
+ @task.info("Configration changed, update it.")
41
+ @task.execute(:sudo, "supervisorctl update #{app_name}")
42
+ elsif status.include('available')
43
+ @task.info("Configration available, add it.")
44
+ @task.execute(:sudo, "supervisorctl add #{app_name}")
45
+ end
46
+ end
37
47
  end
38
48
 
39
- def undent(str)
40
- # from https://github.com/msmorgan/homebrew/blob/master/Library/Homebrew/extend/string.rb
41
- str.gsub(/^.{#{str.slice(/^ +/).length}}/, '')
49
+ def supervisord_reread
50
+ @task.capture(:sudo, %{supervisorctl reread})
42
51
  end
43
52
  end
44
53
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module ForemanExport
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -5,10 +5,10 @@ namespace :load do
5
5
  set :foreman_backend, Capistrano::ForemanExport::Backend::Supervisord
6
6
  set :foreman_roles, :app
7
7
  set :foreman_port, 5000
8
- set :foreman_root, -> { release_path }
8
+ set :foreman_root, -> { current_path }
9
9
  set :foreman_app, -> { fetch(:application) }
10
- set :foreman_procfile, -> { release_path.join('Procfile') }
11
- set :foreman_log, -> { release_path.join('log') }
10
+ set :foreman_procfile, -> { current_path.join('Procfile') }
11
+ set :foreman_log, -> { current_path.join('log') }
12
12
  set :foreman_user, 'nginx'
13
13
  set :foreman_env_variables, {}
14
14
  set :foreman_output, '/etc/supervisor.d'
@@ -49,27 +49,27 @@ namespace :foreman do
49
49
  desc "start"
50
50
  task :start do
51
51
  on roles(fetch(:foreman_roles)) do
52
- execute :sudo, backend.start_cmd(fetch(:foreman_app))
52
+ backend.start_cmd
53
53
  end
54
54
  end
55
55
 
56
56
  desc "stop"
57
57
  task :stop do
58
58
  on roles(fetch(:foreman_roles)) do
59
- execute :sudo, backend.stop_cmd(fetch(:foreman_app))
59
+ backend.stop_cmd
60
60
  end
61
61
  end
62
62
 
63
63
  desc "restart"
64
64
  task :restart do
65
65
  on roles(fetch(:foreman_roles)) do
66
- execute :sudo, backend.restart_cmd(fetch(:foreman_app))
66
+ backend.restart_cmd
67
67
  end
68
68
  end
69
69
  end
70
70
 
71
71
  def backend
72
- @backend ||= fetch(:foreman_backend).new
72
+ @backend ||= fetch(:foreman_backend).new self
73
73
  end
74
74
 
75
75
  def env_variable_path
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-foreman_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katsuma Ito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano