Class: LaunchDarkly::Impl::Model::FeatureFlag Private
- Inherits:
-
Object
- Object
- LaunchDarkly::Impl::Model::FeatureFlag
- Defined in:
- lib/ldclient-rb/impl/model/feature_flag.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Instance Attribute Summary collapse
- #context_targets ⇒ Array<LaunchDarkly::Impl::Model::Target> readonly private
- #data ⇒ Hash readonly private
- #deleted ⇒ Boolean readonly private
- #exclude_from_summaries ⇒ Boolean? readonly private
- #fallthrough ⇒ LaunchDarkly::Impl::Model::VariationOrRollout readonly private
- #fallthrough_results ⇒ LaunchDarkly::Impl::Model::EvalResultFactoryMultiVariations readonly private
- #key ⇒ String readonly private
- #migration_settings ⇒ MigrationSettings? readonly private
- #off_result ⇒ LaunchDarkly::EvaluationDetail readonly private
- #off_variation ⇒ Integer|nil readonly private
- #on ⇒ Boolean readonly private
- #prerequisites ⇒ Array<LaunchDarkly::Impl::Model::Prerequisite> readonly private
- #rules ⇒ Array<LaunchDarkly::Impl::Model::FlagRule> readonly private
- #salt ⇒ String readonly private
- #sampling_ratio ⇒ Integer? readonly private
- #targets ⇒ Array<LaunchDarkly::Impl::Model::Target> readonly private
- #variations ⇒ Array readonly private
- #version ⇒ Integer readonly private
Instance Method Summary collapse
- #==(other) ⇒ Object private
-
#[](key) ⇒ Object
private
This method allows us to read properties of the object as if it’s just a hash.
-
#as_json ⇒ Object
private
parameter is unused, but may be passed if we’re using the json gem.
-
#initialize(data, logger = nil) ⇒ FeatureFlag
constructor
private
A new instance of FeatureFlag.
-
#to_json(*a) ⇒ Object
private
Same as as_json, but converts the JSON structure into a string.
Constructor Details
#initialize(data, logger = nil) ⇒ FeatureFlag
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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}\": #{message}") end end end |
Instance Attribute Details
#context_targets ⇒ Array<LaunchDarkly::Impl::Model::Target> (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
93 94 95 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 93 def context_targets @context_targets end |
#data ⇒ Hash (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
63 64 65 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 63 def data @data end |
#deleted ⇒ Boolean (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
69 70 71 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 69 def deleted @deleted end |
#exclude_from_summaries ⇒ Boolean? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
87 88 89 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 87 def fallthrough_results @fallthrough_results end |
#key ⇒ String (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
65 66 67 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 65 def key @key end |
#migration_settings ⇒ MigrationSettings? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
81 82 83 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 81 def off_variation @off_variation end |
#on ⇒ Boolean (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
95 96 97 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 95 def rules @rules end |
#salt ⇒ String (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
97 98 99 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 97 def salt @salt end |
#sampling_ratio ⇒ Integer? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
91 92 93 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 91 def targets @targets end |
#variations ⇒ Array (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
77 78 79 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 77 def variations @variations end |
#version ⇒ Integer (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
67 68 69 |
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 67 def version @version end |
Instance Method Details
#==(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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 is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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 |