runit-man 1.3 → 1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/runit-man.rb +1 -1
- data/lib/runit-man/app.rb +16 -3
- data/lib/runit-man/service_info.rb +11 -18
- data/sv/run.erb +3 -0
- metadata +2 -2
- data/sv/run +0 -3
data/bin/runit-man.rb
CHANGED
@@ -11,7 +11,7 @@ RunitMan.set :all_services_directory, '/etc/sv'
|
|
11
11
|
OptionParser.new { |op|
|
12
12
|
op.on('-s server') { |val| RunitMan.set :server, val }
|
13
13
|
op.on('-p port') { |val| RunitMan.set :port, val.to_i }
|
14
|
-
op.on('-b addr') { |val| RunitMan.set :bind, val }
|
14
|
+
op.on('-b addr') { |val| RunitMan.set :bind, val } if RunitMan.respond_to?(:bind)
|
15
15
|
op.on('-a active_services_directory (/etc/service by default)') { |val| RunitMan.set :active_services_directory, val }
|
16
16
|
op.on('-f all_services_directory (/etc/sv by default)') { |val| RunitMan.set :all_services_directory, val }
|
17
17
|
op.on_tail('-r', '--register', 'Register as runit service') do
|
data/lib/runit-man/app.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
# encoding: utf-8
|
3
|
-
|
1
|
+
require 'erubis'
|
4
2
|
require 'sinatra/base'
|
5
3
|
require 'sinatra/r18n'
|
6
4
|
require 'runit-man/erb-to-erubis'
|
@@ -80,6 +78,7 @@ class RunitMan < Sinatra::Base
|
|
80
78
|
|
81
79
|
class << self
|
82
80
|
def register_as_runit_service
|
81
|
+
create_run_script
|
83
82
|
return if File.symlink?(File.join(RunitMan.all_services_directory, 'runit-man'))
|
84
83
|
do_cmd("ln -sf #{File.join(GEM_FOLDER, 'sv')} #{File.join(RunitMan.all_services_directory, 'runit-man')}")
|
85
84
|
do_cmd("ln -sf #{File.join(RunitMan.all_services_directory, 'runit-man')} #{File.join(RunitMan.active_services_directory, 'runit-man')}")
|
@@ -89,5 +88,19 @@ class RunitMan < Sinatra::Base
|
|
89
88
|
def do_cmd(command)
|
90
89
|
system(command) or raise "Cannot execute #{command}"
|
91
90
|
end
|
91
|
+
|
92
|
+
def create_run_script
|
93
|
+
script_name = File.join(GEM_FOLDER, 'sv', 'run')
|
94
|
+
File.open(script_name, 'w') do |f|
|
95
|
+
f.print Erubis::Eruby.new(IO.read(script_name + '.erb')).result(
|
96
|
+
:all_services_directory => RunitMan.all_services_directory,
|
97
|
+
:active_services_directory => RunitMan.active_services_directory,
|
98
|
+
:port => RunitMan.port,
|
99
|
+
:bind => RunitMan.respond_to?(:bind) ? RunitMan.bind : nil,
|
100
|
+
:server => RunitMan.server
|
101
|
+
)
|
102
|
+
end
|
103
|
+
File.chmod(0755, script_name)
|
104
|
+
end
|
92
105
|
end
|
93
106
|
end
|
@@ -12,10 +12,8 @@ class ServiceInfo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def stat
|
15
|
-
|
16
|
-
r
|
17
|
-
File.open(File.join(supervise_folder, 'stat'), 'r') { |f| r = f.gets }
|
18
|
-
r
|
15
|
+
r = data_from_file(File.join(supervise_folder, 'stat'))
|
16
|
+
r ? r : 'inactive'
|
19
17
|
end
|
20
18
|
|
21
19
|
def active?
|
@@ -53,23 +51,11 @@ class ServiceInfo
|
|
53
51
|
end
|
54
52
|
|
55
53
|
def pid
|
56
|
-
|
57
|
-
if supervise?
|
58
|
-
File.open(File.join(supervise_folder, 'pid'), 'r') { |f| r = f.gets }
|
59
|
-
end
|
60
|
-
r = r.chomp unless r.nil?
|
61
|
-
r = nil if r == ''
|
62
|
-
r
|
54
|
+
data_from_file(File.join(supervise_folder, 'pid'))
|
63
55
|
end
|
64
56
|
|
65
57
|
def log_pid
|
66
|
-
|
67
|
-
if logged?
|
68
|
-
File.open(File.join(log_supervise_folder, 'pid'), 'r') { |f| r = f.gets }
|
69
|
-
end
|
70
|
-
r = r.chomp unless r.nil?
|
71
|
-
r = nil if r == ''
|
72
|
-
r
|
58
|
+
data_from_file(File.join(log_supervise_folder, 'pid'))
|
73
59
|
end
|
74
60
|
|
75
61
|
def log_file_location
|
@@ -103,6 +89,13 @@ private
|
|
103
89
|
File.directory?(supervise_folder)
|
104
90
|
end
|
105
91
|
|
92
|
+
def data_from_file(file_name)
|
93
|
+
return nil unless File.readable?(file_name)
|
94
|
+
r = IO.read(file_name)
|
95
|
+
r = r.chomp unless r.nil?
|
96
|
+
r.empty? ? nil : r
|
97
|
+
end
|
98
|
+
|
106
99
|
def send_signal!(signal)
|
107
100
|
return unless supervise?
|
108
101
|
File.open(File.join(supervise_folder, 'control'), 'w') { |f| f.print signal.to_s }
|
data/sv/run.erb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runit-man
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "1.
|
4
|
+
version: "1.4"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akzhan Abdulin
|
@@ -142,8 +142,8 @@ files:
|
|
142
142
|
- views/_service_info.erb
|
143
143
|
- i18n/ru.yml
|
144
144
|
- i18n/en.yml
|
145
|
-
- sv/run
|
146
145
|
- sv/log/run
|
146
|
+
- sv/run.erb
|
147
147
|
has_rdoc: true
|
148
148
|
homepage: http://github.com/akzhan/runit-man
|
149
149
|
licenses: []
|
data/sv/run
DELETED