Class: LaunchDarkly::Impl::Model::FeatureFlag

Inherits:
Object
  • Object
show all
Defined in:
lib/ldclient-rb/impl/model/feature_flag.rb

Overview

Since:

  • 5.5.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, logger = nil) ⇒ FeatureFlag

Returns a new instance of FeatureFlag.

Parameters:

  • data (Hash)
  • logger (Logger|nil) (defaults to: nil)

Raises:

  • (ArgumentError)

Since:

  • 5.5.0



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 13

def initialize(data, logger = nil)
  raise ArgumentError, "expected hash but got #{data.class}" unless data.is_a?(Hash)
  @data = data
  @key = data[:key]
  @version = data[:version]
  @deleted = !!data[:deleted]
  return if @deleted
  @variations = data[:variations] || []
  @on = !!data[:on]
  fallthrough = data[:fallthrough] || {}
  @fallthrough = VariationOrRollout.new(fallthrough[:variation], fallthrough[:rollout])
  @off_variation = data[:offVariation]
  @prerequisites = (data[:prerequisites] || []).map do |prereq_data|
    Prerequisite.new(prereq_data, self, logger)
  end
  @targets = (data[:targets] || []).map do |target_data|
    Target.new(target_data, self, logger)
  end
  @context_targets = (data[:contextTargets] || []).map do |target_data|
    Target.new(target_data, self, logger)
  end
  @rules = (data[:rules] || []).map.with_index do |rule_data, index|
    FlagRule.new(rule_data, index, self, logger)
  end
  @salt = data[:salt]
  @off_result = EvaluatorHelpers.evaluation_detail_for_off_variation(self, EvaluationReason::off, logger)
  @fallthrough_results = Preprocessor.precompute_multi_variation_results(self,
      EvaluationReason::fallthrough(false), EvaluationReason::fallthrough(true))
end

Instance Attribute Details

#context_targetsArray<LaunchDarkly::Impl::Model::Target> (readonly)

Returns:

Since:

  • 5.5.0



68
69
70
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 68

def context_targets
  @context_targets
end

#dataHash (readonly)

Returns:

  • (Hash)

Since:

  • 5.5.0



44
45
46
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 44

def data
  @data
end

#deletedBoolean (readonly)

Returns:

  • (Boolean)

Since:

  • 5.5.0



50
51
52
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 50

def deleted
  @deleted
end

#fallthroughLaunchDarkly::Impl::Model::VariationOrRollout (readonly)



58
59
60
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 58

def fallthrough
  @fallthrough
end

#fallthrough_resultsLaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations (readonly)



62
63
64
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 62

def fallthrough_results
  @fallthrough_results
end

#keyString (readonly)

Returns:

  • (String)

Since:

  • 5.5.0



46
47
48
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 46

def key
  @key
end

#off_resultLaunchDarkly::EvaluationDetail (readonly)

Returns:

Since:

  • 5.5.0



60
61
62
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 60

def off_result
  @off_result
end

#off_variationInteger|nil (readonly)

Returns:

  • (Integer|nil)

Since:

  • 5.5.0



56
57
58
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 56

def off_variation
  @off_variation
end

#onBoolean (readonly)

Returns:

  • (Boolean)

Since:

  • 5.5.0



54
55
56
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 54

def on
  @on
end

#prerequisitesArray<LaunchDarkly::Impl::Model::Prerequisite> (readonly)

Returns:

Since:

  • 5.5.0



64
65
66
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 64

def prerequisites
  @prerequisites
end

#rulesArray<LaunchDarkly::Impl::Model::FlagRule> (readonly)

Returns:

Since:

  • 5.5.0



70
71
72
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 70

def rules
  @rules
end

#saltString (readonly)

Returns:

  • (String)

Since:

  • 5.5.0



72
73
74
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 72

def salt
  @salt
end

#targetsArray<LaunchDarkly::Impl::Model::Target> (readonly)

Returns:

Since:

  • 5.5.0



66
67
68
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 66

def targets
  @targets
end

#variationsArray (readonly)

Returns:

  • (Array)

Since:

  • 5.5.0



52
53
54
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 52

def variations
  @variations
end

#versionInteger (readonly)

Returns:

  • (Integer)

Since:

  • 5.5.0



48
49
50
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 48

def version
  @version
end

Instance Method Details

#==(other) ⇒ Object

Since:

  • 5.5.0



81
82
83
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 81

def ==(other)
  other.is_a?(FeatureFlag) && other.data == self.data
end

#[](key) ⇒ Object

This method allows us to read properties of the object as if it’s just a hash. Currently this is necessary because some data store logic is still written to expect hashes; we can remove it once we migrate entirely to using attributes of the class.

Since:

  • 5.5.0



77
78
79
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 77

def [](key)
  @data[key]
end

#as_jsonObject

parameter is unused, but may be passed if we’re using the json gem

Since:

  • 5.5.0



85
86
87
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 85

def as_json(*) # parameter is unused, but may be passed if we're using the json gem
  @data
end

#to_json(*a) ⇒ Object

Same as as_json, but converts the JSON structure into a string.

Since:

  • 5.5.0



90
91
92
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 90

def to_json(*a)
  as_json.to_json(a)
end