runit-man 1.4.5 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.