157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/trail_guide/experiment.rb', line 157
def choose_variant!(override: nil, excluded: false, metadata: nil)
return control if TrailGuide.configuration.disabled
if override.present?
variant = variants.find { |var| var == override }
return variant unless configuration.track_override && started?
else
return winner if winner?
return control if excluded
return control if !started? && configuration.start_manually
start! unless started?
return variants.find { |var| var == participant[storage_key] } if participating?
return control unless TrailGuide.configuration.allow_multiple_experiments == true || !participant.participating_in_active_experiments?(TrailGuide.configuration.allow_multiple_experiments == false)
variant = algorithm.choose!(metadata: metadata)
end
variant.increment_participation!
run_callbacks(:on_choose, variant, metadata)
variant
end
|