wat_catcher 0.2.2 → 0.2.3

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: a7f2a21cd4573317517ed282fa6820600ff69b4c
4
- data.tar.gz: 4b58457abf52246715226a4c0ec86bb248f2134b
3
+ metadata.gz: 0a016f51cbd103e97c8c1bc24c6d7ea60137d247
4
+ data.tar.gz: 4c919cfb4f640de0af8dd10422420a89582d204b
5
5
  SHA512:
6
- metadata.gz: c1f1ac1767ee82fd8b08171e03a5d1e7c53762279fb5a29e3720e96c5382d2a84633979748db9ff8f18c4987f53288b334992385d4c924de338ab1737fafddf5
7
- data.tar.gz: c47dcbf8981c8ed9d5b7f10065eff314687b003a8c387a35013df6d1e2ecfd40b1e3d1592533ab32525ea21c05104ae44b62307eba0a39813cd9fb42dfcffff7
6
+ metadata.gz: ffbba1e53fa970456cc7e37bed74a3725bd7cbe8eef4749307bc482a259026dc2e8f1581fa38df51b8732fdfe7943dc70186a6dd7086f8a2cfdb6d9fe758408d
7
+ data.tar.gz: 28fe9d227b89359741a9cd9ff9cd809e16205093aa8003523e564309dcc814b07efd3f6227c13e13e0bd78bf55dde5e9d5536417bb3922c1a6dcc4fd66ca0243
data/lib/wat_catcher.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "wat_catcher/version"
2
2
 
3
+ require "wat_catcher/report"
3
4
  require 'wat_catcher/sidekiq_poster'
4
5
  require "wat_catcher/middleware"
5
6
  require "wat_catcher/wattle_helper"
@@ -7,10 +7,10 @@ module WatCatcher
7
7
  def call(env)
8
8
  @app.call(env)
9
9
  rescue Exception => exception
10
- SidekiqPoster.report(exception, request: env["action_controller.instance"].request)
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 msg["class"] == WatCatcher::SidekiqPoster.to_s
8
- WatCatcher::SidekiqPoster.report(excpt, sidekiq: msg)
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
- class SidekiqPoster
4
+ class SidekiqPoster
5
5
  include Sidekiq::Worker
6
6
 
7
- def self.report(exception, request: nil, sidekiq: nil)
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"})
@@ -1,3 +1,3 @@
1
1
  module WatCatcher
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
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.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-10 00:00:00.000000000 Z
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