runit-man 1.4.5 → 1.4.6

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.
@@ -29,7 +29,8 @@ runit:
29
29
  switch_down: Deactivate
30
30
  switch_up: Activate
31
31
  log:
32
- title: "Tail 100 lines of service %1 log - %2"
33
- header: "Tail 100 lines of service <strong>%1</strong> log: %2"
32
+ title: "Tail %3 lines of service %1 log - %2"
33
+ header: "Tail %3 lines of service <strong>%1</strong> log: %2 (<code>%4</code>)"
34
+ counts: "Show %1 lines of log"
34
35
  updated: "Page updated at %1"
35
36
  reload: Reload
@@ -31,7 +31,8 @@ runit:
31
31
  switch_down: Выключить
32
32
  switch_up: Включить
33
33
  log:
34
- title: "Последние 100 строк лога сервиса %1 - %2"
35
- header: "Последние 100 строк лога сервиса <strong>%1</strong>: %2"
34
+ title: "Последние %3 строк лога сервиса %1 - %2"
35
+ header: "Последние %3 строк лога сервиса <strong>%1</strong>: %2 (<code>%4</code>)"
36
+ counts: "Показать %1 строк лога"
36
37
  updated: "Страница обновлена %1"
37
38
  reload: Обновить страницу
@@ -5,10 +5,9 @@ require 'sinatra/r18n'
5
5
  require 'runit-man/erb-to-erubis'
6
6
  require 'runit-man/helpers'
7
7
 
8
- R18n::Filters.on :variables
9
-
10
- GEM_FOLDER = File.expand_path(File.join('..', '..'), File.dirname(__FILE__)).freeze
11
-
8
+ MIN_TAIL = 100
9
+ MAX_TAIL = 10000
10
+ GEM_FOLDER = File.expand_path(File.join('..', '..'), File.dirname(__FILE__)).freeze
12
11
  CONTENT_TYPES = {
13
12
  :html => 'text/html',
14
13
  :css => 'text/css',
@@ -16,6 +15,7 @@ CONTENT_TYPES = {
16
15
  :json => 'application/json'
17
16
  }.freeze
18
17
 
18
+ R18n::Filters.on :variables
19
19
 
20
20
  class RunitMan < Sinatra::Base
21
21
  set :environment, :production
@@ -55,14 +55,19 @@ class RunitMan < Sinatra::Base
55
55
  service_infos.to_json
56
56
  end
57
57
 
58
- get '/:name/log' do |name|
59
- srv = ServiceInfo[name]
58
+ get %r[/([^/]+)/log(?:/(\d+))?] do |name, count|
59
+ count = count.to_i
60
+ count = MIN_TAIL if count < MIN_TAIL
61
+ count = MAX_TAIL if count > MAX_TAIL
62
+ srv = ServiceInfo[name]
60
63
  return not_found if srv.nil? || !srv.logged?
61
64
  @scripts = []
62
- @title = t.runit.services.log.title(h(name), h(host_name))
65
+ @title = t.runit.services.log.title(h(name), h(host_name), h(count), h(srv.log_file_location))
63
66
  erb :log, :locals => {
64
- :name => name,
65
- :text => `tail -n 100 #{srv.log_file_location}`
67
+ :name => name,
68
+ :count => count,
69
+ :log_location => srv.log_file_location,
70
+ :text => `tail -n #{count} #{srv.log_file_location}`
66
71
  }
67
72
  end
68
73
 
@@ -34,6 +34,16 @@ module Helpers
34
34
  }
35
35
  end
36
36
 
37
+ def log_link(name, options = {})
38
+ count = (options[:count] || 100).to_i
39
+ title = options[:title].to_s || count
40
+ blank = options[:blank] || false
41
+ hint = options[:hint].to_s || ''
42
+ hint = " title=\"#{h(hint)}\"" unless hint.empty?
43
+ blank = blank ? ' target="_blank"' : ''
44
+ "<a#{hint}#{blank} href=\"/#{h(name)}/log#{ (count != 100) ? "/#{count}" : '' }#footer\">#{h(title)}</a>"
45
+ end
46
+
37
47
  def even_or_odd
38
48
  self.even_or_odd_state = !even_or_odd_state
39
49
  even_or_odd_state
data/sv/run ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ exec 2>&1
3
+ exec runit-man -b 0.0.0.0 -p 14230 -a "/etc/service" -f "/etc/sv"
@@ -21,7 +21,7 @@
21
21
  </td>
22
22
  <td>
23
23
  <% if service_info.logged? %>
24
- <a title="<%= h(t.runit.services.table.values.log_hint(service_info.name)) %>" target="_blank" rel="nofollow" href="/<%= h(service_info.name) %>/log#footer"><%= h(service_info.log_file_location) %></a>
24
+ <%= log_link(service_info.name, :hint => t.runit.services.table.values.log_hint(service_info.name), :blank => true, :title => service_info.log_file_location) %>
25
25
  <% else %>
26
26
  <%= t.runit.services.table.values.log_absent %>
27
27
  <% end %>
@@ -1,5 +1,8 @@
1
1
  <% content_for :content do %>
2
- <%= t.runit.services.log.header(h(name), h(host_name)) %>
2
+ <%= t.runit.services.log.header(h(name), h(host_name), h(count), h(log_location)) %>
3
+ <p>
4
+ <%= t.runit.services.log.counts([100, 250, 500, 1000, 5000].map { |n| log_link(name, :count => n, :title => n) }.join(' ')) %>
5
+ </p>
3
6
  <pre><%= h(text) %></pre>
4
7
  <% end %>
5
8
  <% content_for :footer do %>
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runit-man
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 4
8
+ - 6
9
+ version: 1.4.6
5
10
  platform: ruby
6
11
  authors:
7
12
  - Akzhan Abdulin
@@ -9,99 +14,107 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-03-01 00:00:00 +03:00
17
+ date: 2010-04-01 00:00:00 +04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: json
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: erubis
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
33
41
  version: "0"
34
- version:
42
+ type: :runtime
43
+ version_requirements: *id002
35
44
  - !ruby/object:Gem::Dependency
36
45
  name: sinatra
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
40
48
  requirements:
41
49
  - - ">="
42
50
  - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
43
53
  version: "0"
44
- version:
54
+ type: :runtime
55
+ version_requirements: *id003
45
56
  - !ruby/object:Gem::Dependency
46
57
  name: sinatra-content-for
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
58
+ prerelease: false
59
+ requirement: &id004 !ruby/object:Gem::Requirement
50
60
  requirements:
51
61
  - - ">="
52
62
  - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
53
65
  version: "0"
54
- version:
55
- - !ruby/object:Gem::Dependency
56
- name: r18n-core
57
66
  type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: 0.4.2
64
- version:
67
+ version_requirements: *id004
65
68
  - !ruby/object:Gem::Dependency
66
69
  name: sinatra-r18n
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
+ prerelease: false
71
+ requirement: &id005 !ruby/object:Gem::Requirement
70
72
  requirements:
71
73
  - - ">="
72
74
  - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
77
+ - 4
78
+ - 2
73
79
  version: 0.4.2
74
- version:
80
+ type: :runtime
81
+ version_requirements: *id005
75
82
  - !ruby/object:Gem::Dependency
76
83
  name: rspec
77
- type: :development
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
84
+ prerelease: false
85
+ requirement: &id006 !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - ">="
82
88
  - !ruby/object:Gem::Version
89
+ segments:
90
+ - 0
83
91
  version: "0"
84
- version:
92
+ type: :development
93
+ version_requirements: *id006
85
94
  - !ruby/object:Gem::Dependency
86
95
  name: rr
87
- type: :development
88
- version_requirement:
89
- version_requirements: !ruby/object:Gem::Requirement
96
+ prerelease: false
97
+ requirement: &id007 !ruby/object:Gem::Requirement
90
98
  requirements:
91
99
  - - ">="
92
100
  - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
93
103
  version: "0"
94
- version:
104
+ type: :development
105
+ version_requirements: *id007
95
106
  - !ruby/object:Gem::Dependency
96
107
  name: rack-test
97
- type: :development
98
- version_requirement:
99
- version_requirements: !ruby/object:Gem::Requirement
108
+ prerelease: false
109
+ requirement: &id008 !ruby/object:Gem::Requirement
100
110
  requirements:
101
111
  - - ">="
102
112
  - !ruby/object:Gem::Version
113
+ segments:
114
+ - 0
103
115
  version: "0"
104
- version:
116
+ type: :development
117
+ version_requirements: *id008
105
118
  description: |
106
119
  Simple runit (http://smarden.org/runit/) web management tool with i18n.
107
120
 
@@ -138,6 +151,7 @@ files:
138
151
  - views/_service_info.erb
139
152
  - i18n/ru.yml
140
153
  - i18n/en.yml
154
+ - sv/run
141
155
  - sv/log/run
142
156
  - sv/run.erb
143
157
  has_rdoc: true
@@ -153,18 +167,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
153
167
  requirements:
154
168
  - - ">="
155
169
  - !ruby/object:Gem::Version
170
+ segments:
171
+ - 0
156
172
  version: "0"
157
- version:
158
173
  required_rubygems_version: !ruby/object:Gem::Requirement
159
174
  requirements:
160
175
  - - ">="
161
176
  - !ruby/object:Gem::Version
177
+ segments:
178
+ - 0
162
179
  version: "0"
163
- version:
164
180
  requirements:
165
181
  - none
166
182
  rubyforge_project:
167
- rubygems_version: 1.3.5
183
+ rubygems_version: 1.3.6
168
184
  signing_key:
169
185
  specification_version: 3
170
186
  summary: Runit web management tool.