wat_catcher 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/wat_catcher.rb +1 -0
- data/lib/wat_catcher/middleware.rb +2 -2
- data/lib/wat_catcher/report.rb +58 -0
- data/lib/wat_catcher/sidekiq_middleware.rb +7 -3
- data/lib/wat_catcher/sidekiq_poster.rb +2 -34
- data/lib/wat_catcher/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a016f51cbd103e97c8c1bc24c6d7ea60137d247
|
4
|
+
data.tar.gz: 4c919cfb4f640de0af8dd10422420a89582d204b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffbba1e53fa970456cc7e37bed74a3725bd7cbe8eef4749307bc482a259026dc2e8f1581fa38df51b8732fdfe7943dc70186a6dd7086f8a2cfdb6d9fe758408d
|
7
|
+
data.tar.gz: 28fe9d227b89359741a9cd9ff9cd809e16205093aa8003523e564309dcc814b07efd3f6227c13e13e0bd78bf55dde5e9d5536417bb3922c1a6dcc4fd66ca0243
|
data/lib/wat_catcher.rb
CHANGED
@@ -7,10 +7,10 @@ module WatCatcher
|
|
7
7
|
def call(env)
|
8
8
|
@app.call(env)
|
9
9
|
rescue Exception => exception
|
10
|
-
|
10
|
+
Report.new(exception, request: env["action_controller.instance"].request)
|
11
11
|
raise
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
|
-
end
|
16
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module WatCatcher
|
2
|
+
class Report
|
3
|
+
attr_accessor :exception, :request, :sidekiq
|
4
|
+
|
5
|
+
def initialize(exception, request: nil, sidekiq: nil)
|
6
|
+
self.exception = exception
|
7
|
+
self.request = request
|
8
|
+
self.sidekiq = sidekiq
|
9
|
+
send_report
|
10
|
+
end
|
11
|
+
|
12
|
+
def send_report
|
13
|
+
::WatCatcher::SidekiqPoster.perform_async("#{WatCatcher.configuration.host}/wats", params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def params
|
17
|
+
{ wat: exception_description.merge(request_description).merge(worker_description) }
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def exception_description
|
22
|
+
{
|
23
|
+
backtrace: exception.backtrace.to_a,
|
24
|
+
message: exception.message,
|
25
|
+
error_class: exception.class.to_s,
|
26
|
+
app_env: ::Rails.env.to_s,
|
27
|
+
app_name: ::Rails.application.class.parent_name
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
def request_description
|
32
|
+
return {} unless request
|
33
|
+
request_params = request.filtered_parameters
|
34
|
+
session = request.session.as_json
|
35
|
+
page_url = request.url
|
36
|
+
|
37
|
+
{
|
38
|
+
page_url: page_url,
|
39
|
+
request_headers: headers,
|
40
|
+
request_params: request_params,
|
41
|
+
session: session,
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def headers
|
46
|
+
Hash[*request.headers.select { |x| x.first !~ /\./ }.sort_by(&:first).flatten]
|
47
|
+
end
|
48
|
+
|
49
|
+
def worker_description
|
50
|
+
return {} unless sidekiq
|
51
|
+
{
|
52
|
+
sidekiq_msg: sidekiq
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
@@ -4,11 +4,15 @@ module WatCatcher
|
|
4
4
|
begin
|
5
5
|
yield
|
6
6
|
rescue => excpt
|
7
|
-
raise if
|
8
|
-
WatCatcher::
|
7
|
+
raise if thrown_by_watcatcher?
|
8
|
+
WatCatcher::Report.new(excpt, sidekiq: msg)
|
9
9
|
raise
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
def thrown_by_watcatcher?
|
14
|
+
msg["class"] =~ /WatCatcher/
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
|
-
end
|
18
|
+
end
|
@@ -1,42 +1,10 @@
|
|
1
1
|
require 'sidekiq'
|
2
2
|
|
3
3
|
module WatCatcher
|
4
|
-
|
4
|
+
class SidekiqPoster
|
5
5
|
include Sidekiq::Worker
|
6
6
|
|
7
|
-
|
8
|
-
params = {
|
9
|
-
wat: {
|
10
|
-
backtrace: exception.backtrace.to_a,
|
11
|
-
message: exception.message,
|
12
|
-
error_class: exception.class.to_s,
|
13
|
-
app_env: ::Rails.env.to_s,
|
14
|
-
app_name: ::Rails.application.class.parent_name
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
if request
|
19
|
-
request_params = request.filtered_parameters
|
20
|
-
session = request.session.as_json
|
21
|
-
page_url = request.url
|
22
|
-
|
23
|
-
params[:wat].merge!({
|
24
|
-
page_url: page_url,
|
25
|
-
request_params: request_params,
|
26
|
-
session: session,
|
27
|
-
})
|
28
|
-
end
|
29
|
-
|
30
|
-
if sidekiq
|
31
|
-
params[:wat].merge!({
|
32
|
-
sidekiq_msg: sidekiq
|
33
|
-
})
|
34
|
-
end
|
35
|
-
|
36
|
-
::WatCatcher::SidekiqPoster.perform_async("#{WatCatcher.configuration.host}/wats", params)
|
37
|
-
end
|
38
|
-
|
39
|
-
def perform(url, params)
|
7
|
+
def perform(url, params)
|
40
8
|
HTTPClient.post_content(url,
|
41
9
|
body: params["wat"].to_json,
|
42
10
|
header: {"Content-Type" => "application/json; charset=utf-8"})
|
data/lib/wat_catcher/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wat_catcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Constantine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- lib/wat_catcher/engine.rb
|
142
142
|
- lib/wat_catcher/middleware.rb
|
143
143
|
- lib/wat_catcher/railtie.rb
|
144
|
+
- lib/wat_catcher/report.rb
|
144
145
|
- lib/wat_catcher/sidekiq_middleware.rb
|
145
146
|
- lib/wat_catcher/sidekiq_poster.rb
|
146
147
|
- lib/wat_catcher/version.rb
|