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
- #exclude_from_summaries ⇒ Boolean? readonly
- #fallthrough ⇒ LaunchDarkly::Impl::Model::VariationOrRollout readonly
- #fallthrough_results ⇒ LaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations readonly
- #key ⇒ String readonly
- #migration_settings ⇒ MigrationSettings? 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
- #sampling_ratio ⇒ Integer? 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 57 58 59 60 |
# 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 migration_settings = data[:migration] || {} @migration_settings = MigrationSettings.new(migration_settings[:checkRatio]) @sampling_ratio = data[:samplingRatio] @exclude_from_summaries = !!data[:excludeFromSummaries] @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) 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)
93 94 95 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 93 def context_targets @context_targets end |
#data ⇒ Hash (readonly)
63 64 65 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 63 def data @data end |
#deleted ⇒ Boolean (readonly)
69 70 71 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 69 def deleted @deleted end |
#exclude_from_summaries ⇒ Boolean? (readonly)
75 76 77 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 75 def exclude_from_summaries @exclude_from_summaries end |
#fallthrough ⇒ LaunchDarkly::Impl::Model::VariationOrRollout (readonly)
83 84 85 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 83 def fallthrough @fallthrough end |
#fallthrough_results ⇒ LaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations (readonly)
87 88 89 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 87 def fallthrough_results @fallthrough_results end |
#key ⇒ String (readonly)
65 66 67 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 65 def key @key end |
#migration_settings ⇒ MigrationSettings? (readonly)
71 72 73 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 71 def migration_settings @migration_settings end |
#off_result ⇒ LaunchDarkly::EvaluationDetail (readonly)
85 86 87 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 85 def off_result @off_result end |
#off_variation ⇒ Integer|nil (readonly)
81 82 83 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 81 def off_variation @off_variation end |
#on ⇒ Boolean (readonly)
79 80 81 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 79 def on @on end |
#prerequisites ⇒ Array<LaunchDarkly::Impl::Model::Prerequisite> (readonly)
89 90 91 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 89 def prerequisites @prerequisites end |
#rules ⇒ Array<LaunchDarkly::Impl::Model::FlagRule> (readonly)
95 96 97 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 95 def rules @rules end |
#salt ⇒ String (readonly)
97 98 99 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 97 def salt @salt end |
#sampling_ratio ⇒ Integer? (readonly)
73 74 75 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 73 def sampling_ratio @sampling_ratio end |
#targets ⇒ Array<LaunchDarkly::Impl::Model::Target> (readonly)
91 92 93 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 91 def targets @targets end |
#variations ⇒ Array (readonly)
77 78 79 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 77 def variations @variations end |
#version ⇒ Integer (readonly)
67 68 69 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 67 def version @version end |
Instance Method Details
#==(other) ⇒ Object
106 107 108 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 106 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.
102 103 104 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 102 def [](key) @data[key] end |
#as_json ⇒ Object
parameter is unused, but may be passed if we're using the json gem
110 111 112 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 110 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.
115 116 117 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 115 def to_json(*a) as_json.to_json(*a) end |