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 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
- #!/usr/bin/env ruby
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
- return 'inactive' unless supervise?
16
- r = 'indeterminate'
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
- r = nil
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
- r = nil
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
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ exec 2>&1
3
+ exec runit-man.rb<% if server.kind_of?(String) %> -s "<%= server %>"<% end %><% if bind %> -b <%= bind %><% end %> -p <%= port %> -a "<%= active_services_directory %>" -f "<%= all_services_directory %>"
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.3"
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
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
- exec 2>&1
3
- exec runit-man.rb -b 127.0.0.1 -p 12343