@@ -62,7 +62,7 @@ def initialize(query_filter)
6262 # @param [block] block to instrument
6363 # @return [QueryStats] stats about all the SQL queries executed during the block
6464 def instrument ( &block )
65- queries = Hash . new { |h , k | h [ k ] = { count : 0 , lines : [ ] } }
65+ queries = Hash . new { |h , k | h [ k ] = { count : 0 , lines : [ ] , time : BigDecimal ( 0 ) } }
6666 ActiveSupport ::Notifications . subscribed ( to_proc ( queries ) , 'sql.active_record' , &block )
6767 QueryStats . new ( queries )
6868 end
@@ -75,7 +75,7 @@ def instrument(&block)
7575 private_constant :MARGINALIA_SQL_COMMENT_PATTERN
7676
7777 def to_proc ( queries )
78- lambda do |_name , _start , _finish , _message_id , payload |
78+ lambda do |_name , start , finish , _message_id , payload |
7979 return if payload [ :cached ]
8080
8181 # Given a `sql.active_record` event, figure out which model is being
@@ -87,6 +87,7 @@ def to_proc(queries)
8787 comment = payload [ :sql ] . match ( MARGINALIA_SQL_COMMENT_PATTERN )
8888 queries [ model_name ] [ :lines ] << comment [ :line ] if comment
8989 queries [ model_name ] [ :count ] += 1
90+ queries [ model_name ] [ :time ] += ( finish - start ) . round ( 6 ) # Round to microseconds
9091 end
9192 end
9293 end
0 commit comments