rorvswild 0.0.4 → 0.0.5
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 +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: []
|