Sha256: 13e6b3d18b15a56778fd6a82310f0d8283b97440e3f6d58ee751e4c89b7fbaf7
Contents?: true
Size: 1.23 KB
Versions: 3
Compression:
Stored size: 1.23 KB
Contents
#------------------------------------------------------------------------------ def assert_queries(num = 1, &block) expect(ActiveRecord::Base.count_queries(&block)).to eq num end # http://stackoverflow.com/questions/5490411/counting-the-number-of-queries-performed #------------------------------------------------------------------------------ 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 & 1 rubygems
Version | Path |
---|---|
dm_preferences-1.5.1 | spec/support/assert_queries.rb |
dm_preferences-1.5 | spec/support/assert_queries.rb |
dm_preferences-1.0 | spec/support/assert_queries.rb |