failbot 1.0.0 → 1.1.0

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: 43be75d2d64074d5158ec207574a66a0b432d4b1
4
- data.tar.gz: 87df59cc018eda249fa17c6c95588bf5bc96c569
3
+ metadata.gz: 05b8062afa435bd8569bfed53ea09bf86a1ae64c
4
+ data.tar.gz: a2a41bd715001268b3ea1265e7d477ec7434aaa2
5
5
  SHA512:
6
- metadata.gz: 49262b3d84f1b2004ce2cac34030da256f8418fa323cd06c940427cc012d9d724a69bfc7a27ac8777f8d286cec225077296f38f9d2b190270ac313e0150bdc27
7
- data.tar.gz: c2843b60c8df18431bbf0cf88d52d8b783d301b3ead6475b9e1d5d4add90517593ad1ac56a78d3f752d0d42221fa0db53fcf458479cbe86c8aac09014cdc61bc
6
+ metadata.gz: 3b155496369bb447e379416aee98d77c8f0b120b351cfd7dbb05f672679ac57e6d0800141173901dcbd8dd2d1917f50ae3e1354cceeb1b205895c0ff00052e76
7
+ data.tar.gz: 1675c9ac35f5feaf94920c888d29d151c8fd23e6c3ab93284425334b2737f0f95bf735f189f5f8f01aa5510008b8ebb6a1dc75b69851a1d743368ce377d64518
data/lib/failbot.rb CHANGED
@@ -21,6 +21,24 @@ module Failbot
21
21
  autoload :MemoryBackend, 'failbot/memory_backend'
22
22
  autoload :JSONBackend, 'failbot/json_backend'
23
23
 
24
+ # Public: Set an instrumenter to be called when exceptions are reported.
25
+ #
26
+ # class CustomInstrumenter
27
+ # def instrument(name, payload = {})
28
+ # warn "Exception: #{payload["class"]}\n#{payload.inspect}"
29
+ # end
30
+ # end
31
+ #
32
+ # Failbot.instrumenter = CustomInstrumenter
33
+ #
34
+ # The instrumenter must conform to the `ActiveSupport::Notifications`
35
+ # interface, which defines `#instrument` and accepts:
36
+ #
37
+ # name - the String name of the event (e.g. "report.failbot")
38
+ # payload - a Hash of the exception context.
39
+ #
40
+ attr_accessor :instrumenter
41
+
24
42
  # prevent recursive calls to Failbot.report!
25
43
  attr_accessor :already_reporting
26
44
 
@@ -142,6 +160,7 @@ module Failbot
142
160
 
143
161
  self.already_reporting = true
144
162
  backend.report(data)
163
+ instrument("report.failbot", data)
145
164
  rescue Object => i
146
165
  # don't fail for any reason
147
166
  logger.debug "FAILBOT: #{data.inspect}" rescue nil
@@ -153,6 +172,35 @@ module Failbot
153
172
  self.already_reporting = false
154
173
  end
155
174
 
175
+ # Public: Disable exception reporting. This is equivalent to calling
176
+ # `Failbot.setup("FAILBOT_REPORT" => 0)`, but can be called after setup.
177
+ #
178
+ # Failbot.disable do
179
+ # something_that_might_go_kaboom
180
+ # end
181
+ #
182
+ # block - an optional block to perform while reporting is disabled. If a block
183
+ # is passed, reporting will be re-enabled after the block is called.
184
+ def disable(&block)
185
+ original_report_errors = @report_errors
186
+ @report_errors = false
187
+
188
+ if block
189
+ begin
190
+ block.call
191
+ ensure
192
+ @report_errors = original_report_errors
193
+ end
194
+ end
195
+ end
196
+
197
+ # Public: Enable exception reporting. Reporting is enabled by default, but
198
+ # this can be called if it is explicitly disabled by calling `Failbot.disable`
199
+ # or setting `FAILBOT_REPORTING => "0"` in `Failbot.setup`.
200
+ def enable
201
+ @report_errors = true
202
+ end
203
+
156
204
  # Public: exceptions that were reported. Only available when using the
157
205
  # memory and file backends.
158
206
  #
@@ -235,6 +283,13 @@ module Failbot
235
283
  @hostname ||= Socket.gethostname
236
284
  end
237
285
 
286
+ private
287
+
288
+ # Internal: Publish an event to the instrumenter
289
+ def instrument(name, payload = {})
290
+ Failbot.instrumenter.instrument(name, payload) if Failbot.instrumenter
291
+ end
292
+
238
293
  extend self
239
294
 
240
295
  # If the library was lazy loaded due to failbot/exit_hook.rb and a delayed
@@ -24,10 +24,17 @@ module Failbot
24
24
 
25
25
  def self.context(env)
26
26
  request = Rack::Request.new(env.dup)
27
+ params = {}
28
+ begin
29
+ params = request.params
30
+ rescue
31
+ env["rack.input"].rewind
32
+ end
33
+
27
34
  {
28
35
  :method => request.request_method,
29
36
  :user_agent => env['HTTP_USER_AGENT'],
30
- :params => filtered_parameters(env, request.params),
37
+ :params => filtered_parameters(env, params),
31
38
  :session => (request.session.to_hash rescue nil),
32
39
  :referrer => request.referrer,
33
40
  :remote_ip => request.ip,
@@ -1,3 +1,3 @@
1
1
  module Failbot
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: failbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@rtomayko"
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-27 00:00:00.000000000 Z
13
+ date: 2015-01-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: yajl-ruby
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 0.8.7
35
+ version: '10.0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 0.8.7
42
+ version: '10.0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rack-test
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +54,20 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0.6'
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '5.0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '5.0'
57
71
  description: "..."
58
72
  email:
59
73
  - github+failbot@lists.github.com