diff --git a/lib/mini_scheduler.rb b/lib/mini_scheduler.rb index e6bea57..a4f5bbf 100644 --- a/lib/mini_scheduler.rb +++ b/lib/mini_scheduler.rb @@ -17,16 +17,23 @@ def self.configure yield self end + SidekiqExceptionHandler = + if defined?(Sidekiq.default_configuration) # Sidekiq 7+ + ->(ex, ctx, _config = nil) { Sidekiq.default_configuration.handle_exception(ex, ctx) } + else # Sidekiq 6.5 + ->(ex, ctx) { Sidekiq.handle_exception(ex, ctx) } + end + def self.job_exception_handler(&blk) @job_exception_handler = blk if blk @job_exception_handler end - def self.handle_job_exception(ex, context = {}) + def self.handle_job_exception(ex, context = {}, _config = nil) if job_exception_handler job_exception_handler.call(ex, context) else - Sidekiq.default_configuration.handle_exception(ex, context) + SidekiqExceptionHandler.call(ex, context) end end diff --git a/spec/mini_scheduler/manager_spec.rb b/spec/mini_scheduler/manager_spec.rb index 821c848..264697b 100644 --- a/spec/mini_scheduler/manager_spec.rb +++ b/spec/mini_scheduler/manager_spec.rb @@ -418,7 +418,7 @@ def expect_job_failure(ex, ctx) class TempSidekiqLogger attr_accessor :exception, :context - def call(ex, ctx, _component) + def call(ex, ctx, _config) self.exception = ex self.context = ctx end @@ -438,7 +438,9 @@ def call(ex, ctx, _component) end context "with custom handler" do - before { MiniScheduler.job_exception_handler { |ex, ctx| expect_job_failure(ex, ctx) } } + before do + MiniScheduler.job_exception_handler { |ex, ctx, _config = nil| expect_job_failure(ex, ctx) } + end after { MiniScheduler.instance_variable_set :@job_exception_handler, nil }