diff options
author | Phil Hughes <me@iamphill.com> | 2018-04-25 10:38:06 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-04-25 10:38:06 +0100 |
commit | 7adbed74648574e35cfe79210ef67157cd44937e (patch) | |
tree | f87f83e80afe70fbb3951fd3ad9bf07d42c676e0 /spec/support/helpers/query_recorder.rb | |
parent | c45932bee018aa7d0256367fc4830f5b45bedbab (diff) | |
parent | b36941bdaad03eeb5ab23235b77f1bfad0348f18 (diff) | |
download | gitlab-ce-7adbed74648574e35cfe79210ef67157cd44937e.tar.gz |
Merge branch 'master' into ide-workbench-bar
Diffstat (limited to 'spec/support/helpers/query_recorder.rb')
-rw-r--r-- | spec/support/helpers/query_recorder.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/support/helpers/query_recorder.rb b/spec/support/helpers/query_recorder.rb new file mode 100644 index 00000000000..28536bbef5e --- /dev/null +++ b/spec/support/helpers/query_recorder.rb @@ -0,0 +1,38 @@ +module ActiveRecord + class QueryRecorder + attr_reader :log, :cached + + def initialize(&block) + @log = [] + @cached = [] + ActiveSupport::Notifications.subscribed(method(:callback), 'sql.active_record', &block) + end + + def show_backtrace(values) + Rails.logger.debug("QueryRecorder SQL: #{values[:sql]}") + caller.each { |line| Rails.logger.debug(" --> #{line}") } + end + + def callback(name, start, finish, message_id, values) + show_backtrace(values) if ENV['QUERY_RECORDER_DEBUG'] + + if values[:name]&.include?("CACHE") + @cached << values[:sql] + elsif !values[:name]&.include?("SCHEMA") + @log << values[:sql] + end + end + + def count + @log.count + end + + def cached_count + @cached.count + end + + def log_message + @log.join("\n\n") + end + end +end |