diff --git a/app/lib/activity_logger.rb b/app/lib/activity_logger.rb index 5590f5871..ad8573ab8 100644 --- a/app/lib/activity_logger.rb +++ b/app/lib/activity_logger.rb @@ -13,7 +13,11 @@ class ActivityLogger end def self.log(id, event) - @@loggers[id].each { |logger| logger.write event } + @@loggers[id].each do |logger| + logger.write event + rescue + puts 'rescued' + end end def self.reset diff --git a/spec/lib/activity_logger_spec.rb b/spec/lib/activity_logger_spec.rb index 64085940d..fbd733409 100644 --- a/spec/lib/activity_logger_spec.rb +++ b/spec/lib/activity_logger_spec.rb @@ -29,6 +29,21 @@ RSpec.describe ActivityLogger do expect(sse2).to have_received(:write).with(event) end + it 'sends events to all listeners even if some fail' do + sse1 = spy('sse1') + sse2 = spy('sse2') + event = double('event') + + allow(sse1).to receive(:write).and_throw(:error) + + ActivityLogger.register('test_id', sse1) + ActivityLogger.register('test_id', sse2) + + ActivityLogger.log('test_id', event) + + expect(sse2).to have_received(:write).with(event) + end + it 'does not send events to listeners of a different id' do sse = spy('sse') event = double('event')