rorvswild 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -17
- data/lib/rorvswild/version.rb +1 -1
- data/lib/rorvswild.rb +35 -17
- data/rorvswild.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a2d2980f4fa6ce04e070b58a75a97ab5e868a46
|
4
|
+
data.tar.gz: e6b6663445113ff35fd1d2010f52e20596f9ede5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbb08c554a475c57d39ad6538f2eaf7b9cc8b1fa61898a47447a019f89a0de57ff8f9f9e6e7f9d668ba15ff42bddf9b5bcd7ae2ba7dc5b00990308df9108b67b
|
7
|
+
data.tar.gz: 952b87be7349323d78a57633974b77338ba8efc8fff7c06a94ea16508f25985bdf093f097d46bdb8c019ea373ad7c74e6d08e508a3b688dcf69031c9f413992c
|
data/README.md
CHANGED
@@ -1,24 +1,10 @@
|
|
1
|
-
#
|
1
|
+
# RorVsWild
|
2
2
|
|
3
|
-
|
3
|
+
Simple Ruby on Rails application monitoring for hardcore developers with no time to waste: http://www.rorvswild.com.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
gem 'rorvswild'
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install rorvswild
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
7
|
+
Signup to http://www.rorvswild.com.
|
22
8
|
|
23
9
|
## Contributing
|
24
10
|
|
data/lib/rorvswild/version.rb
CHANGED
data/lib/rorvswild.rb
CHANGED
@@ -27,17 +27,19 @@ module RorVsWild
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def setup_callbacks
|
30
|
-
ApplicationController.rescue_from(StandardError, &method(:after_exception))
|
31
30
|
ActiveSupport::Notifications.subscribe("sql.active_record", &method(:after_sql_query))
|
32
31
|
ActiveSupport::Notifications.subscribe("render_template.action_view", &method(:after_view_rendering))
|
33
32
|
ActiveSupport::Notifications.subscribe("process_action.action_controller", &method(:after_http_request))
|
34
33
|
ActiveSupport::Notifications.subscribe("start_processing.action_controller", &method(:before_http_request))
|
34
|
+
|
35
|
+
this = self
|
36
|
+
ApplicationController.rescue_from(StandardError) { |exception| this.after_exception(exception, self) }
|
35
37
|
end
|
36
38
|
|
37
39
|
def before_http_request(name, start, finish, id, payload)
|
38
40
|
@request = {controller: payload[:controller], action: payload[:action], path: payload[:path]}
|
39
41
|
@queries = []
|
40
|
-
@views =
|
42
|
+
@views = {}
|
41
43
|
@error = nil
|
42
44
|
end
|
43
45
|
|
@@ -45,7 +47,7 @@ module RorVsWild
|
|
45
47
|
request[:db_runtime] = (payload[:db_runtime] || 0).round
|
46
48
|
request[:view_runtime] = (payload[:view_runtime] || 0).round
|
47
49
|
request[:other_runtime] = compute_duration(start, finish) - request[:db_runtime] - request[:view_runtime]
|
48
|
-
|
50
|
+
error[:parameters] = filter_sensitive_data(payload[:params]) if error
|
49
51
|
Thread.new { post_request }
|
50
52
|
rescue => exception
|
51
53
|
log_error(exception)
|
@@ -65,18 +67,29 @@ module RorVsWild
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def after_view_rendering(name, start, finish, id, payload)
|
68
|
-
|
70
|
+
if views
|
71
|
+
if view = views[file = relative_path(payload[:identifier])]
|
72
|
+
view[:runtime] += compute_duration(start, finish)
|
73
|
+
view[:times] += 1
|
74
|
+
else
|
75
|
+
views[file] = {file: file, runtime: compute_duration(start, finish), times: 1}
|
76
|
+
end
|
77
|
+
end
|
69
78
|
end
|
70
79
|
|
71
|
-
def after_exception(exception)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
+
def after_exception(exception, controller)
|
81
|
+
if !exception.is_a?(ActionController::RoutingError)
|
82
|
+
file, line = exception.backtrace.first.split(":")
|
83
|
+
@error = {
|
84
|
+
line: line.to_i,
|
85
|
+
file: relative_path(file),
|
86
|
+
message: exception.message,
|
87
|
+
backtrace: exception.backtrace,
|
88
|
+
exception: exception.class.to_s,
|
89
|
+
session: controller.session.to_hash,
|
90
|
+
environment_variables: filter_sensitive_data(filter_environment_variables(controller.request.env))
|
91
|
+
}
|
92
|
+
end
|
80
93
|
raise exception
|
81
94
|
end
|
82
95
|
|
@@ -95,7 +108,7 @@ module RorVsWild
|
|
95
108
|
end
|
96
109
|
|
97
110
|
def slowest_views
|
98
|
-
views.sort { |h1, h2| h2[:runtime] <=> h1[:runtime] }[0, 25]
|
111
|
+
views.values.sort { |h1, h2| h2[:runtime] <=> h1[:runtime] }[0, 25]
|
99
112
|
end
|
100
113
|
|
101
114
|
def slowest_queries
|
@@ -130,7 +143,7 @@ module RorVsWild
|
|
130
143
|
end
|
131
144
|
|
132
145
|
def compute_duration(start, finish)
|
133
|
-
((finish - start) * 1000)
|
146
|
+
((finish - start) * 1000)
|
134
147
|
end
|
135
148
|
|
136
149
|
def relative_path(path)
|
@@ -148,8 +161,13 @@ module RorVsWild
|
|
148
161
|
end
|
149
162
|
end
|
150
163
|
|
151
|
-
def
|
152
|
-
@
|
164
|
+
def filter_sensitive_data(hash)
|
165
|
+
@sensitive_filter ||= ActionDispatch::Http::ParameterFilter.new(Rails.application.config.filter_parameters)
|
166
|
+
@sensitive_filter.filter(hash)
|
167
|
+
end
|
168
|
+
|
169
|
+
def filter_environment_variables(hash)
|
170
|
+
hash.clone.keep_if { |key,value| key == key.upcase }
|
153
171
|
end
|
154
172
|
|
155
173
|
def logger
|
data/rorvswild.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Rorvswild::VERSION
|
9
9
|
spec.authors = ["Alexis Bernard"]
|
10
10
|
spec.email = ["alexis@bernard.io"]
|
11
|
-
spec.summary = "
|
12
|
-
spec.description = "RorVsWild
|
11
|
+
spec.summary = "Simple Ruby on Rails application monitoring for hardcore developers with no time to waste."
|
12
|
+
spec.description = "RorVsWild points bottlenecks of your app and record errors."
|
13
13
|
spec.homepage = "http://www.rorvswild.com"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rorvswild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexis Bernard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,8 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
|
-
description: RorVsWild
|
28
|
-
request, query and view.
|
27
|
+
description: RorVsWild points bottlenecks of your app and record errors.
|
29
28
|
email:
|
30
29
|
- alexis@bernard.io
|
31
30
|
executables: []
|
@@ -63,5 +62,6 @@ rubyforge_project:
|
|
63
62
|
rubygems_version: 2.2.2
|
64
63
|
signing_key:
|
65
64
|
specification_version: 4
|
66
|
-
summary:
|
65
|
+
summary: Simple Ruby on Rails application monitoring for hardcore developers with
|
66
|
+
no time to waste.
|
67
67
|
test_files: []
|