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 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