class PlanOut::Experiment
Attributes
auto_exposure_log[RW]
Public Class Methods
new(**inputs)
click to toggle source
# File lib/plan_out/experiment.rb, line 8 def initialize(**inputs) @inputs = inputs @exposure_logged = false @_salt = nil @in_experiment = true @name = self.class.name @auto_exposure_log = true setup # sets name, salt, etc. @assignment = Assignment.new(salt) @assigned = false @logger = nil setup end
Public Instance Methods
_assign()
click to toggle source
# File lib/plan_out/experiment.rb, line 25 def _assign configure_logger assign(@assignment, **@inputs) @in_experiment = @assignment.get(:in_experiment, @in_experiment) @assigned = true end
as_blob(extras = {})
click to toggle source
# File lib/plan_out/experiment.rb, line 99 def as_blob(extras = {}) d = { name: @name, time: Time.now.to_i, salt: salt, inputs: @inputs, params: @assignment.data } d.merge!(extras) end
assign(params, *inputs)
click to toggle source
# File lib/plan_out/experiment.rb, line 76 def assign(params, *inputs) # up to child class to implement nil end
auto_exposure_log=(value)
click to toggle source
# File lib/plan_out/experiment.rb, line 44 def auto_exposure_log=(value) @auto_exposure_log = value end
configure_logger()
click to toggle source
# File lib/plan_out/experiment.rb, line 48 def configure_logger nil end
get(name, default = nil)
click to toggle source
# File lib/plan_out/experiment.rb, line 70 def get(name, default = nil) requires_assignment requires_exposure_logging @assignment.get(name, default) end
get_params()
click to toggle source
# File lib/plan_out/experiment.rb, line 64 def get_params requires_assignment requires_exposure_logging @assignment.get_params end
is_logged?()
click to toggle source
# File lib/plan_out/experiment.rb, line 56 def is_logged? @logged end
log_event(event_type, extras = nil)
click to toggle source
# File lib/plan_out/experiment.rb, line 81 def log_event(event_type, extras = nil) if extras.nil? extra_payload = {event: event_type} else extra_payload = { event: event_type, extra_data: extras.clone } end log(as_blob(extra_payload)) end
log_exposure(extras = nil)
click to toggle source
# File lib/plan_out/experiment.rb, line 94 def log_exposure(extras = nil) @exposure_logged = true log_event(:exposure, extras) end
requires_assignment()
click to toggle source
# File lib/plan_out/experiment.rb, line 52 def requires_assignment _assign if !@assigned end
requires_exposure_logging()
click to toggle source
# File lib/plan_out/experiment.rb, line 60 def requires_exposure_logging log_exposure if @auto_exposure_log && @in_experiment && !@exposure_logged end
salt()
click to toggle source
# File lib/plan_out/experiment.rb, line 40 def salt @_salt || @name end
salt=(value)
click to toggle source
# File lib/plan_out/experiment.rb, line 36 def salt=(value) @_salt = value end
setup()
click to toggle source
# File lib/plan_out/experiment.rb, line 32 def setup nil end