Sha256: 11e82f0aba33aa1c01f5b88d758c7cf712ed82507792e1317eb02f710b3f1b54
Contents?: true
Size: 842 Bytes
Versions: 1
Compression:
Stored size: 842 Bytes
Contents
module RSpec::SQLimit class Counter attr_reader :queries, :matcher def self.[](*args) new(*args).tap(&:call) end def initialize(matcher, block) @queries = [] @matcher = matcher @block = block @mutex = Mutex.new end def call @mutex.synchronize do @queries = [] ActiveSupport::Notifications.subscribed callback, "sql.active_record" do @block.call end end end def count matcher ? queries.count { |query| query[:sql] =~ matcher } : queries.count end private def callback @callback ||= lambda do |_name, start, finish, _message_id, values| return if %w(CACHE SCHEMA).include? values[:name] queries << { sql: values[:sql], duration: (finish - start) * 1_000 } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rspec-sqlimit-0.0.1 | lib/rspec/sqlimit/counter.rb |