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/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, Middleware, Payload, Railtie, WebhookClient, WebhookJob

Constant Summary collapse

REPORTED_MARKER =
:@__oopsie_reported
VERSION =
"1.1.1"

Class Method Summary collapse

Class Method Details

.clear_contextObject



46
47
48
# File 'lib/oopsie_exceptions.rb', line 46

def clear_context
  Context.clear
end

.configurationObject



17
18
19
# File 'lib/oopsie_exceptions.rb', line 17

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



21
22
23
# File 'lib/oopsie_exceptions.rb', line 21

def configure
  yield configuration
end

.report(exception, context: {}, handled: true) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/oopsie_exceptions.rb', line 25

def report(exception, context: {}, handled: true)
  return unless configuration.enabled
  return if configuration.ignored?(exception)
  return if exception.instance_variable_get(REPORTED_MARKER)

  exception.instance_variable_set(REPORTED_MARKER, true)

  payload = Payload.build(exception, context: 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



42
43
44
# File 'lib/oopsie_exceptions.rb', line 42

def set_context(hash)
  Context.merge(hash)
end

.with_context(hash) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/oopsie_exceptions.rb', line 50

def with_context(hash)
  previous = Context.current.dup
  Context.merge(hash)
  yield
ensure
  Context.replace(previous)
end