runit-man 1.3 → 1.4

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