Class: Experimental::Overrides

Inherits:
Object
  • Object
show all
Defined in:
lib/experimental/overrides.rb

Instance Method Summary collapse

Constructor Details

#initializeOverrides

Returns a new instance of Overrides.



3
4
5
6
7
8
# File 'lib/experimental/overrides.rb', line 3

def initialize
  @overrides ||= Hash.new do |experiment_overrides, experiment_name|
    experiment_overrides[experiment_name] = {}
  end
  @default_set = false
end

Instance Method Details

#[](subject, experiment_name) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/experimental/overrides.rb', line 21

def [](subject, experiment_name)
  experiment_name = experiment_name.to_s
  if @overrides[experiment_name].key?(subject)
    @overrides[experiment_name][subject]
  else
    @default
  end
end

#[]=(subject, experiment_name, bucket) ⇒ Object



30
31
32
33
# File 'lib/experimental/overrides.rb', line 30

def []=(subject, experiment_name, bucket)
  experiment_name = experiment_name.to_s
  @overrides[experiment_name][subject] = bucket
end

#include?(subject, experiment_name) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/experimental/overrides.rb', line 15

def include?(subject, experiment_name)
  return true if @default_set
  experiment_name = experiment_name.to_s
  @overrides.key?(experiment_name) && @overrides[experiment_name].key?(subject)
end

#resetObject



35
36
37
38
39
# File 'lib/experimental/overrides.rb', line 35

def reset
  @overrides.clear
  @default_set = false
  @default = nil
end

#set_default(value) ⇒ Object



10
11
12
13
# File 'lib/experimental/overrides.rb', line 10

def set_default(value)
  @default_set = true
  @default = value
end