Class: NPlusOneControl::Executor
- Inherits:
-
Object
- Object
- 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
-
.transaction_begin ⇒ Object
Returns the value of attribute transaction_begin.
-
.transaction_rollback ⇒ Object
Returns the value of attribute transaction_rollback.
Instance Attribute Summary collapse
-
#current_scale ⇒ Object
readonly
Returns the value of attribute current_scale.
Instance Method Summary collapse
-
#call ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#initialize(population: nil, scale_factors: nil, matching: nil) ⇒ Executor
constructor
A new instance of Executor.
Constructor Details
#initialize(population: nil, scale_factors: nil, matching: nil) ⇒ Executor
Returns a new instance of Executor.
63 64 65 66 67 |
# File 'lib/n_plus_one_control/executor.rb', line 63 def initialize(population: nil, scale_factors: nil, matching: nil) @population = population @scale_factors = scale_factors @matching = matching end |
Class Attribute Details
.transaction_begin ⇒ Object
Returns the value of attribute transaction_begin.
49 50 51 |
# File 'lib/n_plus_one_control/executor.rb', line 49 def transaction_begin @transaction_begin end |
.transaction_rollback ⇒ Object
Returns the value of attribute transaction_rollback.
50 51 52 |
# File 'lib/n_plus_one_control/executor.rb', line 50 def transaction_rollback @transaction_rollback end |
Instance Attribute Details
#current_scale ⇒ Object (readonly)
Returns the value of attribute current_scale.
53 54 55 |
# File 'lib/n_plus_one_control/executor.rb', line 53 def current_scale @current_scale end |
Instance Method Details
#call ⇒ Object
rubocop:disable Metrics/MethodLength
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/n_plus_one_control/executor.rb', line 70 def call raise ArgumentError, "Block is required!" unless block_given? results = [] collector = Collector.new(matching) (scale_factors || NPlusOneControl.default_scale_factors).each do |scale| @current_scale = scale with_transaction do population&.call(scale) results << [scale, collector.call { yield }] end end results end |