diff --git a/activesupport/lib/active_support/queueing.rb b/activesupport/lib/active_support/queueing.rb index 064f009f139b4..a89a48d0579fb 100644 --- a/activesupport/lib/active_support/queueing.rb +++ b/activesupport/lib/active_support/queueing.rb @@ -83,7 +83,7 @@ def shutdown end def drain - run(@queue.pop) until @queue.empty? + @queue.pop.run until @queue.empty? end def consume diff --git a/activesupport/test/queueing/threaded_consumer_test.rb b/activesupport/test/queueing/threaded_consumer_test.rb index 9dbb7319692f4..a3ca46a261cf8 100644 --- a/activesupport/test/queueing/threaded_consumer_test.rb +++ b/activesupport/test/queueing/threaded_consumer_test.rb @@ -65,7 +65,7 @@ def teardown job = Job.new { raise "RuntimeError: Error!" } @queue.push job - @queue.drain + consume_queue @queue assert_equal 1, @logger.logged(:error).size assert_match "Job Error: #{job.inspect}\nRuntimeError: Error!", @logger.logged(:error).last @@ -76,7 +76,7 @@ def teardown $stderr, old_stderr = StringIO.new, $stderr queue = ActiveSupport::Queue.new queue.push Job.new { raise "RuntimeError: Error!" } - queue.drain + consume_queue queue assert_match 'Job Error', $stderr.string ensure $stderr = old_stderr @@ -97,8 +97,14 @@ def last_error job = Job.new { raise "RuntimeError: Error!" } @queue.push job - @queue.drain + consume_queue @queue assert_equal "RuntimeError: Error!", @queue.consumer.last_error end + + private + def consume_queue(queue) + queue.push nil + queue.consumer.consume + end end