diff --git a/lib/delayed/backend/active_record.rb b/lib/delayed/backend/active_record.rb index 45f1a5fc..454ee26c 100644 --- a/lib/delayed/backend/active_record.rb +++ b/lib/delayed/backend/active_record.rb @@ -63,9 +63,9 @@ def self.ready_to_run(worker_name, max_run_time) def self.before_fork if Gem::Version.new("7.1.0") <= Gem::Version.new(::ActiveRecord::VERSION::STRING) - ::ActiveRecord::Base.clear_all_connections!(:all) + ::ActiveRecord::Base.connection_handler.clear_all_connections!(:all) else - ::ActiveRecord::Base.clear_all_connections! + ::ActiveRecord::Base.connection_handler.clear_all_connections! end end diff --git a/spec/delayed/backend/active_record_spec.rb b/spec/delayed/backend/active_record_spec.rb index 896b3f8a..3cc2bd9a 100644 --- a/spec/delayed/backend/active_record_spec.rb +++ b/spec/delayed/backend/active_record_spec.rb @@ -107,6 +107,19 @@ def use_default_timezone(timezone) end end + describe "before_fork" do + it "clears all connections connection" do + allow(ActiveRecord::Base.connection_handler).to receive(:clear_all_connections!) + Delayed::Backend::ActiveRecord::Job.before_fork + + if Gem::Version.new("7.1.0") <= Gem::Version.new(::ActiveRecord::VERSION::STRING) + expect(ActiveRecord::Base.connection_handler).to have_received(:clear_all_connections!).with(:all) + else + expect(ActiveRecord::Base.connection_handler).to have_received(:clear_all_connections!) + end + end + end + describe "after_fork" do it "calls reconnect on the connection" do allow(ActiveRecord::Base).to receive(:establish_connection)