Module: ABMeter::Core::AssignmentConfig

Defined in:
lib/abmeter/core/assignment_config.rb,
lib/abmeter/core/assignment_config/space.rb,
lib/abmeter/core/assignment_config/variant.rb,
lib/abmeter/core/assignment_config/audience.rb,
lib/abmeter/core/assignment_config/exposable.rb,
lib/abmeter/core/assignment_config/parameter.rb,
lib/abmeter/core/assignment_config/experiment.rb,
lib/abmeter/core/assignment_config/feature_flag.rb

Defined Under Namespace

Modules: Exposable Classes: Audience, Config, Experiment, FeatureFlag, Parameter, PredicateAudience, RandomAudience, Space, UserListAudience, Variant

Class Method Summary collapse

Class Method Details

.from_json(json) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/abmeter/core/assignment_config.rb', line 32

def self.from_json(json)
  parsed_json = JSON.parse(json, symbolize_names: true)

  spaces = Space.from_json(parsed_json[:spaces])
  space_salts = spaces.to_h { |space| [space.id, space.salt] }
  parameters = Parameter.from_json(parsed_json[:parameters])
  feature_flags = FeatureFlag.from_json(parsed_json[:feature_flags])
  experiments = parsed_json[:experiments] ? Experiment.from_json(parsed_json[:experiments], space_salts) : []

  Config.new(
    spaces: spaces,
    feature_flags: feature_flags,
    experiments: experiments,
    parameters: parameters
  )
end