runit-man 1.4.6 → 1.4.7

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.
@@ -34,3 +34,4 @@ runit:
34
34
  counts: "Show %1 lines of log"
35
35
  updated: "Page updated at %1"
36
36
  reload: Reload
37
+ raw: Raw
@@ -36,3 +36,4 @@ runit:
36
36
  counts: "Показать %1 строк лога"
37
37
  updated: "Страница обновлена %1"
38
38
  reload: Обновить страницу
39
+ raw: Текст
@@ -10,6 +10,7 @@ MAX_TAIL = 10000
10
10
  GEM_FOLDER = File.expand_path(File.join('..', '..'), File.dirname(__FILE__)).freeze
11
11
  CONTENT_TYPES = {
12
12
  :html => 'text/html',
13
+ :txt => 'text/plain',
13
14
  :css => 'text/css',
14
15
  :js => 'application/x-javascript',
15
16
  :json => 'application/json'
@@ -32,12 +33,9 @@ class RunitMan < Sinatra::Base
32
33
  end
33
34
 
34
35
  before do
35
- base_content_type = case request.env['REQUEST_URI']
36
- when /\.css$/ then :css
37
- when /\.js$/ then :js
38
- when /\.json$/ then :json
39
- else :html
40
- end
36
+ base_content_type = CONTENT_TYPES.keys.detect do |t|
37
+ request.env['REQUEST_URI'] =~ /\.#{Regexp.escape(t.to_s)}$/
38
+ end || :html
41
39
  content_type CONTENT_TYPES[base_content_type], :charset => 'utf-8'
42
40
  end
43
41
 
@@ -55,15 +53,13 @@ class RunitMan < Sinatra::Base
55
53
  service_infos.to_json
56
54
  end
57
55
 
58
- get %r[/([^/]+)/log(?:/(\d+))?] do |name, count|
56
+ def log_of_service(name, count)
59
57
  count = count.to_i
60
58
  count = MIN_TAIL if count < MIN_TAIL
61
59
  count = MAX_TAIL if count > MAX_TAIL
62
60
  srv = ServiceInfo[name]
63
- return not_found if srv.nil? || !srv.logged?
64
- @scripts = []
65
- @title = t.runit.services.log.title(h(name), h(host_name), h(count), h(srv.log_file_location))
66
- erb :log, :locals => {
61
+ return nil if srv.nil? || !srv.logged?
62
+ {
67
63
  :name => name,
68
64
  :count => count,
69
65
  :log_location => srv.log_file_location,
@@ -71,6 +67,20 @@ class RunitMan < Sinatra::Base
71
67
  }
72
68
  end
73
69
 
70
+ get %r[^/([^/]+)/log(?:/(\d+))?/?$] do |name, count|
71
+ data = log_of_service(name, count)
72
+ return not_found if data.nil?
73
+ @scripts = []
74
+ @title = t.runit.services.log.title(h(name), h(host_name), h(count), h(data[:log_location]))
75
+ erb :log, :locals => data
76
+ end
77
+
78
+ get %r[^/([^/]+)/log(?:/(\d+))?\.txt$] do |name, count|
79
+ data = log_of_service(name, count)
80
+ return not_found if data.nil?
81
+ data[:text]
82
+ end
83
+
74
84
  def log_action(name, text)
75
85
  env = request.env
76
86
  addr = env.include?('X_REAL_IP') ? env['X_REAL_IP'] : env['REMOTE_ADDR']
@@ -39,9 +39,10 @@ module Helpers
39
39
  title = options[:title].to_s || count
40
40
  blank = options[:blank] || false
41
41
  hint = options[:hint].to_s || ''
42
+ raw = options[:raw] || false
42
43
  hint = " title=\"#{h(hint)}\"" unless hint.empty?
43
44
  blank = blank ? ' target="_blank"' : ''
44
- "<a#{hint}#{blank} href=\"/#{h(name)}/log#{ (count != 100) ? "/#{count}" : '' }#footer\">#{h(title)}</a>"
45
+ "<a#{hint}#{blank} href=\"/#{h(name)}/log#{ (count != 100) ? "/#{count}" : '' }#{ raw ? '.txt' : '' }#footer\">#{h(title)}</a>"
45
46
  end
46
47
 
47
48
  def even_or_odd
@@ -1,5 +1,6 @@
1
1
  <% content_for :content do %>
2
- <%= t.runit.services.log.header(h(name), h(host_name), h(count), h(log_location)) %>
2
+ <%= t.runit.services.log.header(h(name), h(host_name), h(count), h(log_location)) %> | <%= log_link(name, :count => count, :title => t.runit.services.log.raw, :raw => true) %>
3
+
3
4
  <p>
4
5
  <%= t.runit.services.log.counts([100, 250, 500, 1000, 5000].map { |n| log_link(name, :count => n, :title => n) }.join(' ')) %>
5
6
  </p>
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 4
8
- - 6
9
- version: 1.4.6
8
+ - 7
9
+ version: 1.4.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - Akzhan Abdulin
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-01 00:00:00 +04:00
17
+ date: 2010-04-05 00:00:00 +04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency