diff --git a/lib/clockwork/event.rb b/lib/clockwork/event.rb index 7e6538f..225bd80 100644 --- a/lib/clockwork/event.rb +++ b/lib/clockwork/event.rb @@ -58,7 +58,7 @@ def execute @block.call(@job, @last) rescue => e @manager.log_error e - @manager.handle_error e + @manager.handle_error e, self end def elapsed_ready?(t) diff --git a/lib/clockwork/manager.rb b/lib/clockwork/manager.rb index 71c745a..821439f 100644 --- a/lib/clockwork/manager.rb +++ b/lib/clockwork/manager.rb @@ -150,8 +150,8 @@ def log_error(e) config[:logger].error(e) end - def handle_error(e) - error_handler.call(e) if error_handler + def handle_error(e, event) + error_handler.call(e, event) if error_handler end def log(msg) diff --git a/test/manager_test.rb b/test/manager_test.rb index c102c43..232035a 100644 --- a/test/manager_test.rb +++ b/test/manager_test.rb @@ -370,8 +370,10 @@ def assert_wont_run(t) describe 'error_handler' do before do @errors = [] - @manager.error_handler do |e| + @events = [] + @manager.error_handler do |e, event| @errors << e + @events << event end # block error log @@ -387,6 +389,11 @@ def assert_wont_run(t) assert_equal ['it error'], @errors.map(&:message) end + it 'registered error_handler gets event that caused the error' do + @manager.tick + assert_equal ['myjob'], @events.map(&:job) + end + it 'error is notified to logger and handler' do @manager.tick assert @string_io.string.include?('it error')