Module: NPlusOneControl::Executor

Defined in:
lib/n_plus_one_control/executor.rb

Overview

Runs code for every scale factor and returns collected queries.

Defined Under Namespace

Classes: Collector

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.transaction_beginObject

Returns the value of attribute transaction_begin.



29
30
31
# File 'lib/n_plus_one_control/executor.rb', line 29

def transaction_begin
  @transaction_begin
end

.transaction_rollbackObject

Returns the value of attribute transaction_rollback.



30
31
32
# File 'lib/n_plus_one_control/executor.rb', line 30

def transaction_rollback
  @transaction_rollback
end

Class Method Details

.call(population:, scale_factors: nil, matching: nil) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/n_plus_one_control/executor.rb', line 32

def call(population:, scale_factors: nil, matching: nil)
  raise ArgumentError, "Block is required!" unless block_given?

  results = []
  collector = Collector.new(matching)

  (scale_factors || NPlusOneControl.default_scale_factors).each do |scale|
    with_transaction do
      population.call(scale)
      results << [scale, collector.call { yield }]
    end
  end
  results
end