wat_catcher 0.5.2 → 0.5.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: ca3288fba4d7e3a5f53af3b8fdfe19d7f2cf6816
4
- data.tar.gz: d626b7f399746367f991c32abf49f311352641a1
3
+ metadata.gz: 4aa334c6634706d075857044218ed559877c0dc6
4
+ data.tar.gz: 9f7a7c8af3e7c3a34a4cc490b7e6907253f56b1c
5
5
  SHA512:
6
- metadata.gz: 82c045b71a0350a3b556747adf338ca697a9c0fe48be94b30a835a746cb547b0cac8d115b5f051c1a86685a4b32b4a99a057dd84701271ec608ca2a962c9fe5d
7
- data.tar.gz: 8a0feafeb82845a4752f67dd5990941beb8d9cf72692564bc17ccef85e4e19392621e20415892c3958a7b76aaf2308965cc5d545375bfac92a82e8549d887159
6
+ metadata.gz: e7fced4c2bc850dee9bb309be2f0bd82a4add929e1f6a958df1c1eda1ffd2a0c979ef79e8baa2db6c75fa40da6769dd01e13c37fc6a47f96c8ad39b346cbb08c
7
+ data.tar.gz: e7e5ad54fc6e647d53dd7e608857d858693ae85ec3fcee80129ac602efbbf0475cef2e10cbc194e6e50123929671fdafc54688658ddae102da9c9566e578f5ae
data/README.md CHANGED
@@ -18,7 +18,162 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ ### Configuration
22
+ You can configure the wat_catcher in 2 ways; 1) via a config/wat_catcher.yml file or in ruby.
23
+
24
+ Currently there are only 2 configuration options:
25
+ host: This is the beginning of the url used to post wats to wattle. It should look something like "https://yourwattleserver.com".
26
+ disabled: If truthy this will stop any wats from being posted.
27
+
28
+ Here are 2 identical configs specified in the yml and in ruby.
29
+
30
+ config/wat_catcher.yml
31
+ ```yml
32
+ production: &default
33
+ host: "https://wattle.yourhost.com"
34
+
35
+ development:
36
+ <<: *default
37
+ disabled: true
38
+
39
+ test:
40
+ <<: *default
41
+ disabled: true
42
+ ```
43
+
44
+ OR
45
+
46
+ config/application.rb
47
+ ```ruby
48
+ module YourApp
49
+ class Application < Rails::Application
50
+ WatCatcher.configuration.host = "https://wattle.yourhost.com"
51
+ end
52
+ end
53
+ ```
54
+
55
+ config/environments/development.rb
56
+ ```ruby
57
+ YourApp::Application.configure do
58
+ WatCatcher.configuration.disabled = true
59
+ end
60
+ ```
61
+
62
+ config/environments/test.rb
63
+ ```ruby
64
+ YourApp::Application.configure do
65
+ WatCatcher.configuration.disabled = true
66
+ end
67
+ ```
68
+
69
+
70
+ ### Mount the engine in your app for javascript errors
71
+ To get around cross-origin issues, an engine was created that accepts POSTs of client exceptions and puts a sidekiq
72
+ job in to post the wat to wattle.
73
+
74
+ In your routes.rb:
75
+ ```ruby
76
+ YourApp::Application.routes.draw do
77
+ mount WatCatcher::Engine => '/wat_catcher'
78
+ end
79
+ ```
80
+
81
+ ### Integrating with a controller
82
+
83
+ Posting errors from a controller action is done by simply including the CatcherOfWats concern into your controller
84
+ ```ruby
85
+ class ApplicationController < ActionController::Base
86
+ include WatCatcher::CatcherOfWats
87
+ end
88
+ ```
89
+
90
+ That will install an around_filter that reports and re-raises anything raised in an action.
91
+
92
+ If you want to record some info about what user saw the error simply implement a 'wat_user' method on the controller
93
+ ```ruby
94
+ class ApplicationController < ActionController::Base
95
+
96
+ def wat_user
97
+ {id: logged_in? ? "account_#{current_user.id}" : nil }
98
+ end
99
+
100
+ end
101
+ ```
102
+
103
+ The wat_user will be turned into a json object. You may put any field in the wat_user, but the 'id' field will be used
104
+ by wattle to decide how many unique users have seen an exception.
105
+
106
+ ### Integrating with sidekiq
107
+
108
+ To have sidekiq post exceptions from sidekiq jobs you must install the sidekiq middleware:
109
+ ```ruby
110
+ ::Sidekiq.configure_server do |config|
111
+ config.server_middleware do |chain|
112
+ chain.add ::WatCatcher::SidekiqMiddleware
113
+ end
114
+ end
115
+ ```
116
+
117
+ If you want to some info about what user saw the error you need to implement a 'wat_user' method on the worker. The user
118
+ object returned by this wat_user follows the same rules as the wat_user on a controller, but the way it's called is
119
+ more complicated.
120
+
121
+ Whatever method is being called by sidekiq to start the job, make sure it implements a wat_user method that accepts
122
+ the same arguments.
123
+
124
+ Here are some ways that a wat_user method could be implemented:
125
+ ```ruby
126
+ class SomeModel < ActiveRecord::Base
127
+ belongs_to :account
128
+ class << self
129
+ def notify(some_model_id)
130
+ SomeModel.find(some_model_id).some_delayed_method
131
+ end
132
+
133
+ def wat_user(some_model_id)
134
+ { id: "some_model_#{some_model_id}" }
135
+ end
136
+ end
137
+
138
+
139
+ def wat_user(*args)
140
+ { id: "some_model_#{id}" }
141
+ end
142
+
143
+ def some_delayed_method
144
+ raise 'herp'
145
+ end
146
+
147
+ def some_other_delayed_method(an_arg)
148
+ raise 'derp'
149
+ end
150
+
151
+ end
152
+
153
+ # Queuing on SomeModel like the following should generate a wat_user with a reasonable id.
154
+ SomeModel.last.delay.some_delayed_method
155
+ SomeModel.last.delay.some_other_delayed_method('blarg')
156
+ SomeModel.delay.notify(12)
157
+
158
+
159
+ class SomeWorker
160
+ include Sidekiq::Worker
161
+
162
+ def perform(some_arg)
163
+ raise "wat? #{some_arg}"
164
+ end
165
+
166
+ def wat_user(some_arg)
167
+ { id: "SomeWorker: #{some_arg}" }
168
+ end
169
+ end
170
+
171
+ # The queued job will raise an error and register a wat with the user "SomeWorker: derp"
172
+ SomeWorker.perform_async("derp")
173
+ ```
174
+
175
+
176
+ When in doubt, check out the cconstantine/wattle. It uses itself to report errors and uses all of the above features.
22
177
 
23
178
  ## Contributing
24
179
 
@@ -11,6 +11,7 @@ module WatCatcher
11
11
  end
12
12
 
13
13
  def send_report
14
+ return if WatCatcher.configuration.disabled
14
15
  ::WatCatcher::SidekiqPoster.perform_async("#{WatCatcher.configuration.host}/wats", params)
15
16
  end
16
17
 
@@ -1,3 +1,3 @@
1
1
  module WatCatcher
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wat_catcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Constantine