Class: TrailGuide::Algorithms::Static
- Defined in:
- lib/trail_guide/algorithms/static.rb
Instance Attribute Summary
Attributes inherited from Algorithm
Class Method Summary collapse
Instance Method Summary collapse
- #choose!(metadata: nil) ⇒ Object
-
#initialize(experiment = nil, &block) ⇒ Static
constructor
A new instance of Static.
- #new(experiment) ⇒ Object
Constructor Details
#initialize(experiment = nil, &block) ⇒ Static
Returns a new instance of Static.
8 9 10 11 12 |
# File 'lib/trail_guide/algorithms/static.rb', line 8 def initialize(experiment=nil, &block) raise ArgumentError, 'You must provide a comparison block when using the static algorithm' unless block_given? @block = block super(experiment) end |
Class Method Details
.choose!(experiment, metadata: nil, &block) ⇒ Object
4 5 6 |
# File 'lib/trail_guide/algorithms/static.rb', line 4 def self.choose!(experiment, metadata: nil, &block) new(experiment, &block).choose!(metadata: ) end |
Instance Method Details
#choose!(metadata: nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/trail_guide/algorithms/static.rb', line 19 def choose!(metadata: nil) return control unless .present? variant = variants.find do |variant| @block.call(variant., ) end variant || control rescue => e TrailGuide.logger.error "#{e.class.name}: #{e.}" TrailGuide.logger.error e.backtrace.first control end |
#new(experiment) ⇒ Object
14 15 16 17 |
# File 'lib/trail_guide/algorithms/static.rb', line 14 def new(experiment) TrailGuide.logger.warn "WARNING: Using the Static algorithm for an experiment which is configured with sticky_assignment. You should either use a different algorithm or configure sticky_assignment for the `#{experiment.experiment_name}` experiment." if experiment.configuration.sticky_assignment? self.class.new(experiment, &@block) end |