Class: LaunchDarkly::Impl::Model::FeatureFlag
- Inherits:
-
Object
- Object
- LaunchDarkly::Impl::Model::FeatureFlag
- Defined in:
- lib/ldclient-rb/impl/model/feature_flag.rb
Overview
Instance Attribute Summary collapse
- #context_targets ⇒ Array<LaunchDarkly::Impl::Model::Target> readonly
- #data ⇒ Hash readonly
- #deleted ⇒ Boolean readonly
- #fallthrough ⇒ LaunchDarkly::Impl::Model::VariationOrRollout readonly
- #fallthrough_results ⇒ LaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations readonly
- #key ⇒ String readonly
- #off_result ⇒ LaunchDarkly::EvaluationDetail readonly
- #off_variation ⇒ Integer|nil readonly
- #on ⇒ Boolean readonly
- #prerequisites ⇒ Array<LaunchDarkly::Impl::Model::Prerequisite> readonly
- #rules ⇒ Array<LaunchDarkly::Impl::Model::FlagRule> readonly
- #salt ⇒ String readonly
- #targets ⇒ Array<LaunchDarkly::Impl::Model::Target> readonly
- #variations ⇒ Array readonly
- #version ⇒ Integer readonly
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#[](key) ⇒ Object
This method allows us to read properties of the object as if it’s just a hash.
-
#as_json ⇒ Object
parameter is unused, but may be passed if we’re using the json gem.
-
#initialize(data, logger = nil) ⇒ FeatureFlag
constructor
A new instance of FeatureFlag.
-
#to_json(*a) ⇒ Object
Same as as_json, but converts the JSON structure into a string.
Constructor Details
#initialize(data, logger = nil) ⇒ FeatureFlag
Returns a new instance of FeatureFlag.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 21 def initialize(data, logger = nil) raise ArgumentError, "expected hash but got #{data.class}" unless data.is_a?(Hash) errors = [] @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], self, errors, "fallthrough") @off_variation = data[:offVariation] check_variation_range(self, errors, @off_variation, "off variation") @prerequisites = (data[:prerequisites] || []).map do |prereq_data| Prerequisite.new(prereq_data, self, errors) end @targets = (data[:targets] || []).map do |target_data| Target.new(target_data, self, errors) end @context_targets = (data[:contextTargets] || []).map do |target_data| Target.new(target_data, self, errors) end @rules = (data[:rules] || []).map.with_index do |rule_data, index| FlagRule.new(rule_data, index, self, errors) end @salt = data[:salt] @off_result = EvaluatorHelpers.evaluation_detail_for_off_variation(self, EvaluationReason::off) @fallthrough_results = Preprocessor.precompute_multi_variation_results(self, EvaluationReason::fallthrough(false), EvaluationReason::fallthrough(true)) unless logger.nil? errors.each do || logger.error("[LDClient] Data inconsistency in feature flag \"#{@key}\": #{}") end end end |
Instance Attribute Details
#context_targets ⇒ Array<LaunchDarkly::Impl::Model::Target> (readonly)
83 84 85 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 83 def context_targets @context_targets end |
#data ⇒ Hash (readonly)
59 60 61 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 59 def data @data end |
#deleted ⇒ Boolean (readonly)
65 66 67 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 65 def deleted @deleted end |
#fallthrough ⇒ LaunchDarkly::Impl::Model::VariationOrRollout (readonly)
73 74 75 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 73 def fallthrough @fallthrough end |
#fallthrough_results ⇒ LaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations (readonly)
77 78 79 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 77 def fallthrough_results @fallthrough_results end |
#key ⇒ String (readonly)
61 62 63 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 61 def key @key end |
#off_result ⇒ LaunchDarkly::EvaluationDetail (readonly)
75 76 77 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 75 def off_result @off_result end |
#off_variation ⇒ Integer|nil (readonly)
71 72 73 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 71 def off_variation @off_variation end |
#on ⇒ Boolean (readonly)
69 70 71 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 69 def on @on end |
#prerequisites ⇒ Array<LaunchDarkly::Impl::Model::Prerequisite> (readonly)
79 80 81 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 79 def prerequisites @prerequisites end |
#rules ⇒ Array<LaunchDarkly::Impl::Model::FlagRule> (readonly)
85 86 87 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 85 def rules @rules end |
#salt ⇒ String (readonly)
87 88 89 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 87 def salt @salt end |
#targets ⇒ Array<LaunchDarkly::Impl::Model::Target> (readonly)
81 82 83 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 81 def targets @targets end |
#variations ⇒ Array (readonly)
67 68 69 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 67 def variations @variations end |
#version ⇒ Integer (readonly)
63 64 65 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 63 def version @version end |
Instance Method Details
#==(other) ⇒ Object
96 97 98 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 96 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.
92 93 94 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 92 def [](key) @data[key] end |
#as_json ⇒ Object
parameter is unused, but may be passed if we’re using the json gem
100 101 102 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 100 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.
105 106 107 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 105 def to_json(*a) as_json.to_json(*a) end |