From 535dbd71faebf17fe0ecf7353071bc568be06eb0 Mon Sep 17 00:00:00 2001 From: joshrpowell Date: Mon, 27 Oct 2025 11:01:12 -0400 Subject: [PATCH] Fix Rails 8.1+ compatibility by replacing Benchmark with Process.clock_gettime --- lib/query_diet/logger.rb | 8 +++----- spec/query_diet/logger_spec.rb | 8 +++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/query_diet/logger.rb b/lib/query_diet/logger.rb index a0223b1..c3c593c 100644 --- a/lib/query_diet/logger.rb +++ b/lib/query_diet/logger.rb @@ -1,5 +1,3 @@ -require 'benchmark' - module QueryDiet class Logger DEFAULT_OPTIONS = { :bad_count => 8, :bad_time => 5000 } @@ -16,9 +14,9 @@ def log(query) yield else result = nil - time = Benchmark.realtime do - result = yield - end + start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) + result = yield + time = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time queries << [query, time] if log_query?(query) result end diff --git a/spec/query_diet/logger_spec.rb b/spec/query_diet/logger_spec.rb index 16801d7..0933f5f 100644 --- a/spec/query_diet/logger_spec.rb +++ b/spec/query_diet/logger_spec.rb @@ -5,9 +5,11 @@ end def mock_realtime(seconds) - Benchmark.should_receive(:realtime).at_least(:once).and_wrap_original do |original_method, *args, &block| - original_method.call(*args, &block) - seconds + call_count = 0 + Process.should_receive(:clock_gettime).with(Process::CLOCK_MONOTONIC).at_least(:twice).and_wrap_original do + result = call_count.even? ? (call_count / 2) * seconds : ((call_count / 2) + 1) * seconds + call_count += 1 + result end end