diff --git a/lib/que.rb b/lib/que.rb index 89459472..4bf27c4b 100644 --- a/lib/que.rb +++ b/lib/que.rb @@ -89,7 +89,12 @@ def connection=(conn) if conn.to_s == 'ActiveRecord' # Load and setup AR compatibility. require_relative 'que/active_record/connection' - m = Que::ActiveRecord::Connection::JobMiddleware + m = + if ::ActiveRecord.gem_version >= Gem::Version.new('7.1') + Que::ActiveRecord::Connection::JobMiddlewareRails71 + else + Que::ActiveRecord::Connection::JobMiddleware + end job_middleware << m unless job_middleware.include?(m) Que::ActiveRecord::Connection.method(:checkout) else diff --git a/lib/que/active_record/connection.rb b/lib/que/active_record/connection.rb index aafeb878..469b760a 100644 --- a/lib/que/active_record/connection.rb +++ b/lib/que/active_record/connection.rb @@ -46,6 +46,16 @@ def call(job) end end end + + module JobMiddlewareRails71 + class << self + def call(job) + yield + + ::ActiveRecord::Base.connection_handler.clear_active_connections!(:all) unless job.class.resolve_que_setting(:run_synchronously) + end + end + end end end end