Module: Fino::Library::AbTestingAnalysisSupport

Included in:
Fino::Library
Defined in:
lib/fino/library/ab_testing_analysis_support.rb

Constant Summary collapse

SettingNotAbTested =
Class.new(Fino::Error)
AdapterDoesNotSupportAbTestingAnalysis =
Class.new(Fino::Error)

Instance Method Summary collapse

Instance Method Details

#analyse(setting_name, at: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fino/library/ab_testing_analysis_support.rb', line 24

def analyse(setting_name, at: nil)
  ensure_ab_testing_analysis_supported!

  setting_instance = fetch_ab_testable_setting(setting_name, at: at)
  raw_conversions = adapter.read_ab_testing_conversions(
    setting_instance.definition,
    setting_instance.experiment.variants
  )

  Fino::AbTesting::Analysis.from_raw_conversions(setting_instance, raw_conversions)
end

#convert(setting_name, at: nil, time: Time.now, **context) ⇒ Object



18
19
20
21
22
# File 'lib/fino/library/ab_testing_analysis_support.rb', line 18

def convert(setting_name, at: nil, time: Time.now, **context)
  convert!(setting_name, at: at, time: time, **context)
rescue SettingNotAbTested, AdapterDoesNotSupportAbTestingAnalysis
  nil
end

#convert!(setting_name, at: nil, for: nil, time: Time.now) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/fino/library/ab_testing_analysis_support.rb', line 7

def convert!(setting_name, at: nil, for: nil, time: Time.now)
  ensure_ab_testing_analysis_supported!

  scope = binding.local_variable_get(:for)

  setting_instance = fetch_ab_testable_setting(setting_name, at: at)
  variant = setting_instance.experiment.variant(for: scope)

  adapter.record_ab_testing_conversion(setting_instance.definition, variant, scope, time)
end

#reset_analysis!(setting_name, at: nil) ⇒ Object



36
37
38
39
40
41
# File 'lib/fino/library/ab_testing_analysis_support.rb', line 36

def reset_analysis!(setting_name, at: nil)
  ensure_ab_testing_analysis_supported!

  setting_instance = fetch_ab_testable_setting(setting_name, at: at)
  adapter.clear_ab_testing_conversions(setting_instance.definition.key)
end