class N1Finder::Adapters::SequelAdapter
Catches queries when using Sequel
Constants
- MAIN_METHOD
Method in `Sequel::Model.db.class` that we observe to find N+1 queries
Each sequel adapter has `execute` method For example: https://github.com/jeremyevans/sequel/blob/ac925ce9556f33d56f49b84d905d307c6a621716/lib/sequel/adapters/postgres.rb#L171 https://github.com/jeremyevans/sequel/blob/ac925ce9556f33d56f49b84d905d307c6a621716/lib/sequel/adapters/mysql.rb#L352 https://github.com/jeremyevans/sequel/blob/ac925ce9556f33d56f49b84d905d307c6a621716/lib/sequel/adapters/sqlite.rb#L129
Private Instance Methods
database_class()
click to toggle source
# File lib/n_1_finder/adapters/sequel_adapter.rb, line 30 def database_class @database_class ||= Sequel::Model.db.class end
set_trap()
click to toggle source
# File lib/n_1_finder/adapters/sequel_adapter.rb, line 15 def set_trap main_query_method = MAIN_METHOD main_method_alias = MAIN_METHOD_ALIAS current_storage = storage database_class.class_eval do alias_method main_method_alias, main_query_method define_method(main_query_method) do |*params, &block| sql = params.first current_storage.add(sql, {}, caller) send(main_method_alias, *params, &block) end end end