Class: Shipeasy::SDK::Eval::Assignment
- Inherits:
-
Object
- Object
- Shipeasy::SDK::Eval::Assignment
- Defined in:
- lib/shipeasy/sdk/eval.rb
Overview
The result of universe(name).assign(user) — a unit's standing in a
universe (a mutual-exclusion pool, so it lands in at most one experiment).
Never raises: an un-enrolled unit still resolves get to the universe
defaults (or the caller's fallback). Reading is side-effect free — the
single exposure is logged once by assign() when the unit is enrolled.
Instance Attribute Summary collapse
-
#group ⇒ Object
readonly
The assigned variant/group name, or nil when not enrolled.
-
#name ⇒ Object
readonly
The experiment the unit landed in, or nil when not enrolled.
Instance Method Summary collapse
-
#enrolled? ⇒ Boolean
True iff the unit is enrolled in an experiment in this universe.
-
#get(field, fallback = nil) ⇒ Object
Read a resolved param: the assigned variant's override, else the universe default, else
fallback. -
#initialize(name, group, params) ⇒ Assignment
constructor
paramsis already merged (universeDefaults ⊕ variantOverride) when enrolled; defaults-only (or {}) when not.
Constructor Details
#initialize(name, group, params) ⇒ Assignment
params is already merged (universeDefaults ⊕ variantOverride) when
enrolled; defaults-only (or {}) when not.
236 237 238 239 240 |
# File 'lib/shipeasy/sdk/eval.rb', line 236 def initialize(name, group, params) @name = name @group = group @params = params || {} end |
Instance Attribute Details
#group ⇒ Object (readonly)
The assigned variant/group name, or nil when not enrolled.
232 233 234 |
# File 'lib/shipeasy/sdk/eval.rb', line 232 def group @group end |
#name ⇒ Object (readonly)
The experiment the unit landed in, or nil when not enrolled.
230 231 232 |
# File 'lib/shipeasy/sdk/eval.rb', line 230 def name @name end |
Instance Method Details
#enrolled? ⇒ Boolean
True iff the unit is enrolled in an experiment in this universe.
243 244 245 |
# File 'lib/shipeasy/sdk/eval.rb', line 243 def enrolled? !@group.nil? end |
#get(field, fallback = nil) ⇒ Object
Read a resolved param: the assigned variant's override, else the
universe default, else fallback. Works even when not enrolled (the
variant layer is absent, so you get universeDefault ?? fallback).
Looks up both string and symbol keys.
251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/shipeasy/sdk/eval.rb', line 251 def get(field, fallback = nil) if @params.key?(field) @params[field] elsif field.respond_to?(:to_s) && @params.key?(field.to_s) @params[field.to_s] elsif field.respond_to?(:to_sym) && @params.key?(field.to_sym) @params[field.to_sym] else fallback end end |