diff --git a/lib/solid_queue/processes/poller.rb b/lib/solid_queue/processes/poller.rb index aa772807..c1e59400 100644 --- a/lib/solid_queue/processes/poller.rb +++ b/lib/solid_queue/processes/poller.rb @@ -10,8 +10,12 @@ module Poller private def with_polling_volume - if SolidQueue.silence_polling? - ActiveRecord::Base.logger.silence { yield } + if SolidQueue.silence_polling? && ActiveRecord::Base.logger + if ActiveRecord::Base.logger.respond_to?(:silence) + ActiveRecord::Base.logger.silence { yield } + else + ActiveRecord::Base.with(logger: Logger.new("/dev/null") { yield } + end else yield end diff --git a/test/integration/processes_poller.rb b/test/integration/processes_poller.rb new file mode 100644 index 00000000..77f5c8e5 --- /dev/null +++ b/test/integration/processes_poller.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require "test_helper" + +class ProcessPollerTest < ActiveSupport::TestCase + def test_active_record_logger_nil + previous_logger = ActiveRecord::Base.logger + ActiveRecord::Base.logger = nil + pid = fork { SolidQueue::Supervisor.start } + sleep 1 + ensure + ActiveRecord::Base.logger = previous_logger + terminate_process(pid) if pid && process_exists?(pid) + end + + def test_active_record_logger_logger_dev_null + previous_logger = ActiveRecord::Base.logger + ActiveRecord::Base.logger = Logger.new("/dev/null") + pid = fork { SolidQueue::Supervisor.start } + sleep 1 + ensure + ActiveRecord::Base.logger = previous_logger + terminate_process(pid) if pid && process_exists?(pid) + end + + def test_active_record_logger_active_support_logger_dev_null + previous_logger = ActiveRecord::Base.logger + ActiveRecord::Base.logger = ActiveSupport::Logger.new("/dev/null") + pid = fork { SolidQueue::Supervisor.start } + sleep 1 + ensure + ActiveRecord::Base.logger = previous_logger + terminate_process(pid) if pid && process_exists?(pid) + end +end