Sha256: 8116356ba1be8bdbe7fa135212f9eb0d3279858160cb0f9cf2b8d91a8f46ec72
Contents?: true
Size: 913 Bytes
Versions: 3
Compression:
Stored size: 913 Bytes
Contents
module ActiveRecord class QueryCounter cattr_accessor :query_count do 0 end IGNORED_SQL = [/^PRAGMA (?!(table_info))/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/, /^SAVEPOINT/, /^ROLLBACK TO SAVEPOINT/, /^RELEASE SAVEPOINT/, /^SHOW max_identifier_length/] def call(name, start, finish, message_id, values) # FIXME: this seems bad. we should probably have a better way to indicate # the query was cached unless 'CACHE' == values[:name] self.class.query_count += 1 unless IGNORED_SQL.any? { |r| values[:sql] =~ r } end end end end ActiveSupport::Notifications.subscribe('sql.active_record', ActiveRecord::QueryCounter.new) module ActiveRecord class Base def self.count_queries(&block) ActiveRecord::QueryCounter.query_count = 0 yield ActiveRecord::QueryCounter.query_count end end end
Version data entries
3 entries across 3 versions & 2 rubygems