capistrano-foreman_export 0.0.2 → 0.0.3

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
  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