mil-rack_apm 0.1.1 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f58da6bf14587d6dcfa3a18f0c3f96e3ebf40ca0
4
- data.tar.gz: 7915d2d7fcaf143d37427a56d3180f70175aa2c0
3
+ metadata.gz: d1be2a80e1a87635650acee6937618c72f44aa23
4
+ data.tar.gz: 03e321c9c0769718e168be3a618e8233ca97903c
5
5
  SHA512:
6
- metadata.gz: 450a34d3949d00b579dc7f0e282a295bfda3c60e8c814bda7cb94dc72d0eb6548b99cb4d1b70320e500b98b6c5138fa2e17f9ad5c0afa92f6f9cbc5f142c8514
7
- data.tar.gz: fb75af9695aa76798403147142aa4890dc902b3896950a06124ae927807cef926956f4339f4c567174fb1ce8502816eed3adabbe4aa46e2edbf43c00ee127e4b
6
+ metadata.gz: d687477d7702f8bfe3ecf1490595912cd126166c63ea71c5954ade0c5d65e85073b8475d3526afdb84f0891648a52f26482e8e801cf86c792a86f1d75e6fc25e
7
+ data.tar.gz: 0fc3ca9ccd0c03ee7386bbec603d91c5cba65c1009607d2d75716665e33c10ab148a8ab8de443b3e66f3c5c6e4506a56d87a23f46fdb79127f58a6862088c214
@@ -2,22 +2,30 @@ module Mil
2
2
  module RackApm
3
3
  class Data
4
4
 
5
- def initialize(app)
5
+
6
+ def initialize(app, skip_path = [])
6
7
  @app = app
8
+ skip_path = [skip_path] if skip_path.class == String
9
+ @skip_path = skip_path
7
10
  end
8
11
 
9
12
  def call(env)
10
13
  start_time = time_now
11
14
  status, header, body = @app.call(env)
12
- request_time = (time_now - start_time) * 1000
13
- unless env['REQUEST_PATH'] =~ /.*?\.(png|css|jpg|js|ico|jpeg|gif|bmp)$/
14
- q_path = path_split_to env['REQUEST_PATH']
15
- i = "mili-#{env['REQUEST_METHOD']}-#{q_path}"
16
- t = "milt-#{env['REQUEST_METHOD']}-#{q_path}"
17
- redis.incr i
18
- redis.incrbyfloat t, ('%0.3f' % request_time)
15
+ begin
16
+ request_time = (time_now - start_time) * 1000
17
+ return status, header, body if skip_path? env['REQUEST_PATH']
18
+ unless env['REQUEST_PATH'] =~ /.*?\.(png|css|jpg|js|ico|jpeg|gif|bmp)$/
19
+ q_path = path_split_to env['REQUEST_PATH']
20
+ i = "mili-#{env['REQUEST_METHOD']}-#{q_path}"
21
+ t = "milt-#{env['REQUEST_METHOD']}-#{q_path}"
22
+ redis.incr i
23
+ redis.incrbyfloat t, ('%0.3f' % request_time)
24
+ end
25
+ [status, header, body]
26
+ rescue => e
27
+ [status, header, body]
19
28
  end
20
- [status, header, body]
21
29
  end
22
30
 
23
31
  def redis
@@ -44,6 +52,14 @@ module Mil
44
52
  end
45
53
  end
46
54
 
55
+ def skip_path?(path)
56
+ return false if @skip_path.empty?
57
+ @skip_path.each do |p|
58
+ return true if path =~ /^#{p}.*/
59
+ end
60
+ false
61
+ end
62
+
47
63
  def path_split_to(path)
48
64
  m = path.split '/'
49
65
  m.map! do |t|
@@ -31,6 +31,25 @@ $(document).ready(function(){
31
31
  }
32
32
  });
33
33
 
34
+ $('.delete_key').click(function(){
35
+ if(confirm("Are you delete the key?")){
36
+ var url = window.location.href.split('?')[0];
37
+ var obj = $(this);
38
+ $.ajax({
39
+ method: "DELETE",
40
+ url: url +"/delete_key",
41
+ data: { key: obj.attr('key') },
42
+ success: function(message){
43
+ if('ok' == message){
44
+ obj.parents('tr').remove();
45
+ }else{
46
+ alert('delete error!');
47
+ }
48
+ }
49
+ })
50
+ }
51
+ })
52
+
34
53
  })
35
54
 
36
55
  var update_data = function(){
@@ -1,5 +1,5 @@
1
1
  module Mil
2
2
  module RackApm
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -46,14 +46,17 @@
46
46
  <div class="col-md-offset-1 col-md-10 table-responsive">
47
47
  <table class="table table-hover" id="table_data">
48
48
  <tr class="active no_data" >
49
- <th>REQUEST METHOD</th><th>PATH</th><th>COUNT</th><th>Mean Time</th>
49
+ <th>REQUEST METHOD</th><th>PATH</th><th>COUNT</th><th>Mean Time</th><th>Action</th>
50
50
  </tr>
51
51
  <% @data.each do |data| %>
52
52
  <tr class="<%= tr_css data[:request_method] %>">
53
- <th class="request_method"><%= data[:request_method] %></th>
54
- <th class="path"><%= data[:path].nil? ? '/' : data[:path] %></th>
55
- <th class="count"><%= data[:count] %></th>
56
- <th class="times"><%= '%0.3f' % (data[:times].to_f / data[:count].to_f) %>ms</th>
53
+ <td class="request_method"><%= data[:request_method] %></td>
54
+ <td class="path"><%= data[:path].nil? ? '/' : data[:path] %></td>
55
+ <td class="count"><%= data[:count] %></td>
56
+ <td class="times"><%= '%0.3f' % (data[:times].to_f / data[:count].to_f) %>ms</td>
57
+ <td>
58
+ <a href="javascript:void(0)" class="btn btn-danger btn-xs delete_key" key="<%= "#{data[:request_method]}-#{data[:path]}"%>" role="button">删除</a>
59
+ </td>
57
60
  </tr>
58
61
  <% end %>
59
62
  </table>
@@ -46,6 +46,14 @@ module Mil
46
46
  @data = data.default_data
47
47
  erb :index
48
48
  end
49
+
50
+ delete '/delete_key' do
51
+ if data.delete_key params[:key]
52
+ 'ok'
53
+ else
54
+ 'error'
55
+ end
56
+ end
49
57
  end
50
58
  end
51
59
  end
@@ -10,13 +10,19 @@ module Mil
10
10
 
11
11
  #[{key: xx, count: 1, times: 23},{key: xx, count: 1, times: 23}]
12
12
  def default_data
13
- keys = @redis.keys 'mili-*'
13
+ keys = red.keys 'mili-*'
14
14
  count_array = redis_key_count keys
15
15
  sort_array = sort_desc count_array
16
16
  data = array_set_data sort_array
17
17
  data
18
18
  end
19
19
 
20
+ def delete_key(key)
21
+ keys = red.keys "*-#{key}"
22
+ count = red.del keys
23
+ count.to_i > 0
24
+ end
25
+
20
26
  private
21
27
 
22
28
  def red
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mil-rack_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - millim