Skip to content

Commit 6c4d7d5

Browse files
stympyroelbondoc
andauthored
feat: skip middleware, plugins, and exception reporting when exceptions are disabled (#646)
--------- Co-authored-by: Roel Bondoc <[email protected]>
1 parent a00c6a0 commit 6c4d7d5

File tree

13 files changed

+67
-50
lines changed

13 files changed

+67
-50
lines changed

lib/honeybadger/agent.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ def initialize(opts = {})
125125
# @return [String] UUID reference to the notice within Honeybadger.
126126
# @return [false] when ignored.
127127
def notify(exception_or_opts = nil, opts = {}, **kwargs)
128+
if !config[:'exceptions.enabled']
129+
debug { 'disabled feature=notices' }
130+
return false
131+
end
132+
128133
opts = opts.dup
129134
opts.merge!(kwargs)
130135

lib/honeybadger/init/hanami.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
Honeybadger.load_plugins!
1010

11-
if Hanami::VERSION >= '2.0'
11+
if Hanami::VERSION >= '2.0' && Honeybadger.config[:'exceptions.enabled']
1212
Hanami.app.instance_eval do
1313
config.middleware.use Honeybadger::Rack::UserFeedback
1414
config.middleware.use Honeybadger::Rack::UserInformer

lib/honeybadger/init/rails.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ class Railtie < ::Rails::Railtie
1414
initializer 'honeybadger.install_middleware' do |app|
1515
honeybadger_config = Honeybadger::Agent.instance.config
1616

17-
app.config.middleware.insert(0, Honeybadger::Rack::ErrorNotifier)
18-
app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserInformer) if honeybadger_config[:'user_informer.enabled']
19-
app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserFeedback) if honeybadger_config[:'feedback.enabled']
17+
if honeybadger_config[:'exceptions.enabled']
18+
app.config.middleware.insert(0, Honeybadger::Rack::ErrorNotifier)
19+
app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserInformer) if honeybadger_config[:'user_informer.enabled']
20+
app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserFeedback) if honeybadger_config[:'feedback.enabled']
21+
end
2022
end
2123

2224
config.before_initialize do

lib/honeybadger/plugins/active_job.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def context(job) # rubocop:disable Metrics/MethodLength
5151
end
5252

5353
execution do
54-
::ActiveJob::Base.set_callback(:perform, :around, &ActiveJob.method(:perform_around))
54+
::ActiveJob::Base.set_callback(:perform, :around, &ActiveJob.method(:perform_around)) if Honeybadger.config[:'exceptions.enabled']
5555

5656
if config.load_plugin_insights?(:active_job)
5757
::ActiveSupport::Notifications.subscribe(/(enqueue_at|enqueue|enqueue_retry|enqueue_all|perform|retry_stopped|discard)\.active_job/, Honeybadger::ActiveJobSubscriber.new)

lib/honeybadger/plugins/delayed_job.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module Honeybadger
1515
end
1616

1717
execution do
18+
return unless Honeybadger.config[:'exceptions.enabled']
1819
require 'honeybadger/plugins/delayed_job/plugin'
1920
::Delayed::Worker.plugins << Plugins::DelayedJob::Plugin
2021
end

lib/honeybadger/plugins/faktory.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def call(worker, job)
1515
requirement { defined?(::Faktory) }
1616

1717
execution do
18+
return unless Honeybadger.config[:'exceptions.enabled']
1819
::Faktory.configure_worker do |faktory|
1920
faktory.worker_middleware do |chain|
2021
chain.prepend Middleware

lib/honeybadger/plugins/karafka.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ module Plugins
88
execution do
99
require 'honeybadger/karafka'
1010

11-
errors_listener = ::Honeybadger::Karafka::ErrorsListener.new
12-
::Karafka.monitor.subscribe(errors_listener)
13-
::Karafka.producer.monitor.subscribe(errors_listener) if ::Karafka.respond_to?(:producer)
11+
if Honeybadger.config[:'exceptions.enabled']
12+
errors_listener = ::Honeybadger::Karafka::ErrorsListener.new
13+
::Karafka.monitor.subscribe(errors_listener)
14+
::Karafka.producer.monitor.subscribe(errors_listener) if ::Karafka.respond_to?(:producer)
15+
end
1416

1517
if config.load_plugin_insights?(:karafka)
1618
::Karafka.monitor.subscribe(::Honeybadger::Karafka::InsightsListener.new)

lib/honeybadger/plugins/rails.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def self.source_ignored?(source)
6464
::ActionDispatch::ShowExceptions.prepend(ExceptionsCatcher)
6565
end
6666

67-
if defined?(::ActiveSupport::ErrorReporter) # Rails 7
67+
if Honeybadger.config[:'exceptions.enabled'] && defined?(::ActiveSupport::ErrorReporter) # Rails 7
6868
::Rails.error.subscribe(ErrorSubscriber)
6969
end
7070
end

lib/honeybadger/plugins/resque.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def payload_class_with_honeybadger
6464
end
6565

6666
execution do
67+
return unless Honeybadger.config[:'exceptions.enabled']
6768
::Resque::Job.send(:include, Installer)
6869
end
6970
end

lib/honeybadger/plugins/shoryuken.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def notification_params(body)
4040
requirement { defined?(::Shoryuken) }
4141

4242
execution do
43+
return unless Honeybadger.config[:'exceptions.enabled']
4344
::Shoryuken.configure_server do |config|
4445
config.server_middleware do |chain|
4546
chain.add Middleware

0 commit comments

Comments
 (0)