daemontools 0.2.0 → 0.2.6

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
  SHA256:
3
- metadata.gz: 9dfea32b1c19fb71a22c1e6fcd414522b7470cec233ddd85e54ee00c5e4eb82e
4
- data.tar.gz: 5f2bd483ce8e98235039bd4c084d84a6b6cf0f2612f997be167a7b8e705f096a
3
+ metadata.gz: f5703423d017dfd15356942bfb9c15b1bf90a0066e0ee3cb44d6465c0028a926
4
+ data.tar.gz: f7cb58a362f20b50c777a935b9468d7ca290b6d1f9c655321dc37d0b3103b069
5
5
  SHA512:
6
- metadata.gz: d2e573d9827f32d2ed84f93d4423526f416767ea8117aca68e544b931a9f211e138efa38bcd0d87e221ba98d7b9d6252f22131a8ff55f46bc7bf8981757366e8
7
- data.tar.gz: 419eee00aef1789ea1ca2705548b0f0f385d5dd96e64165f83cdfee03202821449ea62e61ab6731ca5b7b07db38cdaefd6f5f38e0c492e8c1792ccbc09376beb
6
+ metadata.gz: 990027123b11e7049fe904a19ac9fe30ae0fdbd6823a61d3640d0e9506f95daec95d6d7fa09878ef18d8fcf89a1d5682aec99591eb35e6134a16a4901cdfd27c
7
+ data.tar.gz: 5d668f9a9bcd887332110e549e738a29bbfcce6e696cf45c57fa27545d5d54a3d2f91116562cefdeb81dc26d349b423ae1fd69e4688a4a23caf1510d2a9343b0
data/bin/daemontools-gen CHANGED
@@ -10,13 +10,22 @@ puts "Building svc services for roles #{roles} .."
10
10
  old_path = ARGV[2] || ''
11
11
  new_path = ARGV[3] || ''
12
12
 
13
- if old_path.empty? || new_path.empty?
14
- builder = Daemontools::Builder.new("#{Dir.pwd}/config/services.rb")
15
- builder.gen(roles, environment)
16
- else
13
+ def need_remove_old_services?(old_path, new_path)
14
+ # If no new path there is no reason to try remove old services
15
+ return false if new_path.nil? || new_path.empty?
16
+ # If no old path there is no reason to try remove old services
17
+ return false if old_path.nil? || old_path.empty?
18
+ # Check if config files are exists
19
+ File.exist?("#{old_path}/config/services.rb") && File.exist?("#{new_path}/config/services.rb")
20
+ end
21
+
22
+ if need_remove_old_services?(old_path, new_path)
17
23
  previous_builder = Daemontools::Builder.new("#{old_path}/config/services.rb")
18
24
  current_builder = Daemontools::Builder.new("#{new_path}/config/services.rb")
19
25
  remover = Daemontools::Remover.new(roles, previous_builder, current_builder)
20
26
  remover.remove_unused_services
21
27
  current_builder.gen(roles, environment)
28
+ else
29
+ builder = Daemontools::Builder.new("#{Dir.pwd}/config/services.rb")
30
+ builder.gen(roles, environment)
22
31
  end
data/lib/daemontools.rb CHANGED
@@ -6,15 +6,20 @@ require 'erb'
6
6
 
7
7
  module Daemontools
8
8
  class << self
9
- attr_accessor :svc_root, :log_root
9
+ attr_accessor :svc_root, :log_root, :tmp_root
10
10
  end
11
11
  @svc_root = '/etc/service'
12
12
  @log_root = '/var/log/svc'
13
+ @tmp_root = '/tmp'
13
14
 
14
15
  def self.exists?(name)
15
16
  check_service_exists(name, false)
16
17
  end
17
18
 
19
+ def self.tmp_exists?(name)
20
+ Dir.exists?("#{@tmp_root}/daemontools_service_#{name}")
21
+ end
22
+
18
23
  def self.status(name)
19
24
  check_service_exists(name)
20
25
  r = `sudo svstat #{@path} 2>&1`
@@ -57,6 +62,29 @@ module Daemontools
57
62
  true
58
63
  end
59
64
 
65
+ def self.add_empty_tmp(name)
66
+ path = "#{@tmp_root}/daemontools_service_#{name}"
67
+ Dir.mkdir(path) unless Dir.exists?(path)
68
+ true
69
+ end
70
+
71
+ def self.move_tmp(name)
72
+ tmp_path = "#{@tmp_root}/daemontools_service_#{name}"
73
+ svc_path = "#{@svc_root}/#{name}"
74
+
75
+ r = `mv #{tmp_path} #{svc_path}`
76
+ raise r if $?.exitstatus != 0
77
+ raise r if ! r.empty?
78
+
79
+ now = Time.now.to_f
80
+ while `sudo svstat #{svc_path} 2>&1`.match(/unable to open/i)
81
+ raise "Timeout wait for svc add service" if Time.now.to_f - now > 10
82
+ sleep 0.1
83
+ end
84
+
85
+ true
86
+ end
87
+
60
88
  def self.add(name, command, options = {})
61
89
  @name = name
62
90
  @command = command
@@ -91,7 +119,7 @@ module Daemontools
91
119
  end
92
120
 
93
121
  def self.delete(name, rm_cmd = nil)
94
- check_service_exists(name)
122
+ return false unless exists?(name)
95
123
  stop(name)
96
124
  cmd = rm_cmd.nil? ? "sudo rm -rf #{@path} 2>&1" : "#{rm_cmd} #{@path}"
97
125
  r = `#{cmd}`
@@ -16,10 +16,11 @@ Capistrano::Configuration.instance(:must_exist).load do
16
16
  path = fetch(:previous_release)
17
17
  puts "rollback 1"
18
18
  else
19
+ previous_release_path = fetch(:previous_release)
19
20
  path = fetch(:release_path)
20
21
 
21
22
  servers.each do |server, roles|
22
- command = "cd #{path} && bundle exec daemontools-gen #{fetch :rails_env, "production"} #{roles.join(',')} #{current_path} #{release_path}"
23
+ command = "cd #{path} && bundle exec daemontools-gen #{fetch :rails_env, "production"} #{roles.join(',')} #{previous_release_path} #{current_path}"
23
24
  run command, :hosts => server
24
25
  end
25
26
  end
@@ -1,3 +1,3 @@
1
1
  module Daemontools
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemontools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - sh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-30 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,8 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.7.9
105
+ rubygems_version: 3.0.8
107
106
  signing_key:
108
107
  specification_version: 4
109
108
  summary: Distributed storage