Module: Rack::Timeout::Rollbar
- Defined in:
- lib/rack/timeout/rollbar.rb
Overview
Groups timeout exceptions in rollbar by exception class, http method, and url.
Usage: after requiring rollbar (say, in your rollbar initializer file), call:
require "rack/timeout/rollbar"
Ruby 2.1 is required as we use ‘Module.prepend`.
To use a custom fingerprint for grouping:
Rack::Timeout::Rollbar.fingerprint do |exception, env|
# … return some kind of string derived from exception and env
end
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.default_rack_timeout_fingerprint(exception, env) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/rack/timeout/rollbar.rb', line 23 def self.default_rack_timeout_fingerprint(exception, env) request = ::Rack::Request.new(env) [ exception.class.name, request.request_method, request.path ].join(" ") end |
.fingerprint(&block) ⇒ Object
19 20 21 |
# File 'lib/rack/timeout/rollbar.rb', line 19 def self.fingerprint(&block) define_method(:rack_timeout_fingerprint) { |exception, env| block[exception, env] } end |
Instance Method Details
#build_payload(level, message, exception, extra) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rack/timeout/rollbar.rb', line 34 def build_payload(level, , exception, extra) payload = super(level, , exception, extra) return payload unless exception.is_a?(::Rack::Timeout::ExceptionWithEnv) \ && payload.respond_to?(:[]) \ && payload.respond_to?(:[]=) data = payload["data"] return payload unless data.respond_to?(:[]=) payload = payload.dup data = data.dup data["fingerprint"] = rack_timeout_fingerprint(exception, exception.env) payload["data"] = data return payload end |