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

Inherits:
Object
  • Object
show all
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.

Since:

  • 5.5.0

Instance Attribute Summary collapse

Instance Method Summary collapse

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.

Raises:

  • (ArgumentError)

Since:

  • 5.5.0



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 |message|
      logger.error("[LDClient] Data inconsistency in feature flag \"#{@key}\": #{message}")
    end
  end
end

Instance Attribute Details

#context_targetsArray<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.

Since:

  • 5.5.0



93
94
95
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 93

def context_targets
  @context_targets
end

#dataHash (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.

Since:

  • 5.5.0



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

def data
  @data
end

#deletedBoolean (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.

Since:

  • 5.5.0



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

def deleted
  @deleted
end

#exclude_from_summariesBoolean? (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.

Since:

  • 5.5.0



75
76
77
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 75

def exclude_from_summaries
  @exclude_from_summaries
end

#fallthroughLaunchDarkly::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.

Since:

  • 5.5.0



83
84
85
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 83

def fallthrough
  @fallthrough
end

#fallthrough_resultsLaunchDarkly::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.

Since:

  • 5.5.0



87
88
89
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 87

def fallthrough_results
  @fallthrough_results
end

#keyString (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.

Since:

  • 5.5.0



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

def key
  @key
end

#migration_settingsMigrationSettings? (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.

Since:

  • 5.5.0



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

def migration_settings
  @migration_settings
end

#off_resultLaunchDarkly::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.

Since:

  • 5.5.0



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

def off_result
  @off_result
end

#off_variationInteger|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.

Since:

  • 5.5.0



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

def off_variation
  @off_variation
end

#onBoolean (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.

Since:

  • 5.5.0



79
80
81
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 79

def on
  @on
end

#prerequisitesArray<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.

Since:

  • 5.5.0



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

def prerequisites
  @prerequisites
end

#rulesArray<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.

Since:

  • 5.5.0



95
96
97
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 95

def rules
  @rules
end

#saltString (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.

Since:

  • 5.5.0



97
98
99
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 97

def salt
  @salt
end

#sampling_ratioInteger? (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.

Since:

  • 5.5.0



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

def sampling_ratio
  @sampling_ratio
end

#targetsArray<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.

Since:

  • 5.5.0



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

def targets
  @targets
end

#variationsArray (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.

Since:

  • 5.5.0



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

def variations
  @variations
end

#versionInteger (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.

Since:

  • 5.5.0



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.

Since:

  • 5.5.0



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.

Since:

  • 5.5.0



102
103
104
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 102

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

#as_jsonObject

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

Since:

  • 5.5.0



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.

Since:

  • 5.5.0



115
116
117
# File 'lib/ldclient-rb/impl/model/feature_flag.rb', line 115

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