rorvswild 0.0.8 → 0.0.9
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/lib/rorvswild/version.rb +1 -1
- data/lib/rorvswild.rb +40 -15
- data/test/ror_vs_wild_test.rb +17 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6e52c1a22d430fa8b500f62fdd31f181167db81
|
4
|
+
data.tar.gz: 2f5733d3c6e7dc928d375f16a4aa73e11ec70ffd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cf9c4add4dc657ced2e51a965d3aa1506582a9c93f9e4176e66560715833b1dde19b2321b42b7bdbdddf537b0e7a32ceb90034b900119eaf9b63a49cb2af716
|
7
|
+
data.tar.gz: f8fda54c4b7cd69c6aa62100af1dccc2e0c36dc12d15d5a7992d92adc7afa0cf25b8d3ba7be6cbd13a1cdd80da0c4d23a0481618aa482f736060bc9b819fd3d6
|
data/lib/rorvswild/version.rb
CHANGED
data/lib/rorvswild.rb
CHANGED
@@ -26,6 +26,14 @@ module RorVsWild
|
|
26
26
|
default_client ? default_client.measure_block(name , &block) : block.call
|
27
27
|
end
|
28
28
|
|
29
|
+
def self.catch_error(extra_details = nil, &block)
|
30
|
+
default_client.catch_error(extra_details, &block) if default_client
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.record_error(exception, extra_details = nil)
|
34
|
+
default_client.record_error(exception, extra_details) if default_client
|
35
|
+
end
|
36
|
+
|
29
37
|
class Client
|
30
38
|
def self.default_config
|
31
39
|
{
|
@@ -104,15 +112,10 @@ module RorVsWild
|
|
104
112
|
def after_exception(exception, controller)
|
105
113
|
if !exception.is_a?(ActionController::RoutingError)
|
106
114
|
file, line = exception.backtrace.first.split(":")
|
107
|
-
@error =
|
108
|
-
line: line.to_i,
|
109
|
-
file: relative_path(file),
|
110
|
-
message: exception.message,
|
111
|
-
backtrace: exception.backtrace,
|
112
|
-
exception: exception.class.to_s,
|
115
|
+
@error = exception_to_hash(exception).merge(
|
113
116
|
session: controller.session.to_hash,
|
114
117
|
environment_variables: filter_sensitive_data(filter_environment_variables(controller.request.env))
|
115
|
-
|
118
|
+
)
|
116
119
|
end
|
117
120
|
raise exception
|
118
121
|
end
|
@@ -137,14 +140,7 @@ module RorVsWild
|
|
137
140
|
cpu_time_offset = cpu_time
|
138
141
|
block.call
|
139
142
|
rescue => exception
|
140
|
-
|
141
|
-
job[:error] = {
|
142
|
-
line: line.to_i,
|
143
|
-
file: relative_path(file),
|
144
|
-
message: exception.message,
|
145
|
-
backtrace: exception.backtrace,
|
146
|
-
exception: exception.class.to_s,
|
147
|
-
}
|
143
|
+
job[:error] = exception_to_hash(exception)
|
148
144
|
raise
|
149
145
|
ensure
|
150
146
|
job[:runtime] = (Time.now - started_at) * 1000
|
@@ -152,6 +148,19 @@ module RorVsWild
|
|
152
148
|
post_job
|
153
149
|
end
|
154
150
|
|
151
|
+
def catch_error(extra_details = nil, &block)
|
152
|
+
begin
|
153
|
+
block.call
|
154
|
+
rescue => exception
|
155
|
+
record_error(exception, extra_details)
|
156
|
+
exception
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def record_error(exception, extra_details = nil)
|
161
|
+
post_error(exception_to_hash(exception, extra_details))
|
162
|
+
end
|
163
|
+
|
155
164
|
def cpu_time
|
156
165
|
time = Process.times
|
157
166
|
time.utime + time.stime + time.cutime + time.cstime
|
@@ -214,6 +223,10 @@ module RorVsWild
|
|
214
223
|
log_error(exception)
|
215
224
|
end
|
216
225
|
|
226
|
+
def post_error(hash)
|
227
|
+
post("/errors", error: hash)
|
228
|
+
end
|
229
|
+
|
217
230
|
def extract_file_and_line_from_call_stack(stack)
|
218
231
|
return unless location = stack.find { |str| str.include?(Rails.root.to_s) }
|
219
232
|
file, line, method = location.split(":")
|
@@ -237,6 +250,18 @@ module RorVsWild
|
|
237
250
|
path.sub(Rails.root.to_s, "")
|
238
251
|
end
|
239
252
|
|
253
|
+
def exception_to_hash(exception, extra_details = nil)
|
254
|
+
file, line = exception.backtrace.first.split(":")
|
255
|
+
{
|
256
|
+
line: line.to_i,
|
257
|
+
file: relative_path(file),
|
258
|
+
message: exception.message,
|
259
|
+
backtrace: exception.backtrace,
|
260
|
+
exception: exception.class.to_s,
|
261
|
+
extra_details: extra_details,
|
262
|
+
}
|
263
|
+
end
|
264
|
+
|
240
265
|
def post(path, data)
|
241
266
|
uri = URI(api_url + path)
|
242
267
|
Net::HTTP.start(uri.host, uri.port) do |http|
|
data/test/ror_vs_wild_test.rb
CHANGED
@@ -39,6 +39,23 @@ class RorVsWildTest < MiniTest::Unit::TestCase
|
|
39
39
|
assert_equal(2, RorVsWild.measure_block("1+1") { 1+1 })
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_catch_error
|
43
|
+
client.expects(:post_error)
|
44
|
+
exception = RorVsWild.catch_error { 1 / 0 }
|
45
|
+
assert_equal(ZeroDivisionError, exception.class)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_catch_error_with_extra_Details
|
49
|
+
client.expects(:post_error)
|
50
|
+
exception = RorVsWild.catch_error(foo: "bar") { 1 / 0 }
|
51
|
+
assert_equal(ZeroDivisionError, exception.class)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_catch_error_when_no_errors
|
55
|
+
client.expects(:post_error).never
|
56
|
+
assert_equal(2, RorVsWild.catch_error { 1 + 1 })
|
57
|
+
end
|
58
|
+
|
42
59
|
private
|
43
60
|
|
44
61
|
def client
|
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.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexis Bernard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|