Class: ABMeter::Core::AssignmentConfig::FeatureFlag

Inherits:
Object
  • Object
show all
Includes:
Exposable
Defined in:
lib/abmeter/core/assignment_config/feature_flag.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, variant:, audience:) ⇒ FeatureFlag

Returns a new instance of FeatureFlag.



11
12
13
14
15
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 11

def initialize(id:, variant:, audience:)
  @id = id
  @variant = variant
  @audience = audience
end

Instance Attribute Details

#audienceObject (readonly)

Returns the value of attribute audience.



9
10
11
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 9

def audience
  @audience
end

#idObject (readonly)

Returns the value of attribute id.



9
10
11
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 9

def id
  @id
end

#variantObject (readonly)

Returns the value of attribute variant.



9
10
11
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 9

def variant
  @variant
end

Class Method Details

.from_json(json) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 17

def self.from_json(json)
  json.map do |flag|
    new(
      id: flag[:id],
      audience: Audience.from_json(flag[:audience]),
      variant: Variant.from_json(flag[:variant])
    )
  end
end

Instance Method Details

#expose_parameter(user, parameter) ⇒ Object

Expose parameter for feature flags

Raises:

  • (ArgumentError)


36
37
38
39
40
41
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 36

def expose_parameter(user, parameter)
  validate_expose_parameter_args!(user.user_id, parameter, audience)
  raise ArgumentError, 'Variant must be provided for feature flags' unless variant

  make_exposure(user, parameter, 'FeatureFlag', id, audience, variant)
end

#serialize(*_) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/abmeter/core/assignment_config/feature_flag.rb', line 27

def serialize(*_)
  {
    id: id,
    audience: audience.serialize,
    variant: variant.serialize
  }
end