Class: NPlusOneControl::Executor::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/n_plus_one_control/executor.rb

Overview

Subscribes to ActiveSupport notifications and collect matching queries.

Instance Method Summary collapse

Constructor Details

#initialize(pattern) ⇒ Collector

Returns a new instance of Collector.



9
10
11
# File 'lib/n_plus_one_control/executor.rb', line 9

def initialize(pattern)
  @pattern = pattern
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
# File 'lib/n_plus_one_control/executor.rb', line 13

def call
  @queries = []
  ActiveSupport::Notifications
    .subscribed(method(:callback), NPlusOneControl.event) do
    yield
  end
  @queries
end

#callback(_name, _start, _finish, _message_id, values) ⇒ Object



22
23
24
25
# File 'lib/n_plus_one_control/executor.rb', line 22

def callback(_name, _start, _finish, _message_id, values)
  return if %w[CACHE SCHEMA].include? values[:name]
  @queries << values[:sql] if @pattern.nil? || (values[:sql] =~ @pattern)
end