Module: OopsieExceptions
- Defined in:
- lib/oopsie_exceptions/webhook_job.rb,
lib/oopsie_exceptions.rb,
lib/oopsie_exceptions/context.rb,
lib/oopsie_exceptions/payload.rb,
lib/oopsie_exceptions/railtie.rb,
lib/oopsie_exceptions/version.rb,
lib/oopsie_exceptions/middleware.rb,
lib/oopsie_exceptions/configuration.rb,
lib/oopsie_exceptions/webhook_client.rb,
lib/oopsie_exceptions/error_subscriber.rb,
lib/oopsie_exceptions/active_job_extension.rb,
lib/oopsie_exceptions/exception_normalizer.rb,
lib/generators/oopsie_exceptions/install_generator.rb
Overview
Webhook delivery job. Loaded from the Railtie inside on_load(:active_job),
so it's only defined when the host app has ActiveJob available.
Inherits from ActiveJob::Base directly (not ApplicationJob) so the gem has
zero hard dependencies on host-app code.
Defined Under Namespace
Modules: ActiveJobExtension, Context, Generators
Classes: Configuration, ErrorSubscriber, ExceptionNormalizer, Middleware, Payload, Railtie, WebhookClient, WebhookJob
Constant Summary
collapse
- REPORTED_MARKER =
:@__oopsie_reported
- VERSION =
"1.1.2"
Class Method Summary
collapse
Class Method Details
.clear_context ⇒ Object
52
53
54
|
# File 'lib/oopsie_exceptions.rb', line 52
def clear_context
Context.clear
end
|
.configuration ⇒ Object
18
19
20
|
# File 'lib/oopsie_exceptions.rb', line 18
def configuration
@configuration ||= Configuration.new
end
|
22
23
24
|
# File 'lib/oopsie_exceptions.rb', line 22
def configure
yield configuration
end
|
.report(exception, context: {}, handled: true) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/oopsie_exceptions.rb', line 26
def report(exception, context: {}, handled: true)
return unless configuration.enabled
normalized = ExceptionNormalizer.normalize(exception, context: context)
reportable_exception = normalized.exception
return if configuration.ignored?(reportable_exception)
return if reportable_exception.instance_variable_get(REPORTED_MARKER)
([reportable_exception] + normalized.wrappers).each do |reported_exception|
reported_exception.instance_variable_set(REPORTED_MARKER, true)
end
payload = Payload.build(reportable_exception, context: normalized.context, handled: handled)
if configuration.before_notify
payload = configuration.before_notify.call(payload)
return if payload.nil?
end
deliver(payload)
end
|
.set_context(hash) ⇒ Object
48
49
50
|
# File 'lib/oopsie_exceptions.rb', line 48
def set_context(hash)
Context.merge(hash)
end
|
.with_context(hash) ⇒ Object