1+ <!DOCTYPE html>
2+ < html >
3+ < head >
4+ < meta charset ="utf-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6+ < title >
7+ Module: LaunchDarkly
8+
9+ — LaunchDarkly Ruby SDK
10+
11+ </ title >
12+
13+ < link rel ="stylesheet " href ="css/style.css " type ="text/css " />
14+
15+ < link rel ="stylesheet " href ="css/common.css " type ="text/css " />
16+
17+ < script type ="text/javascript ">
18+ pathId = "LaunchDarkly" ;
19+ relpath = '' ;
20+ </ script >
21+
22+
23+ < script type ="text/javascript " charset ="utf-8 " src ="js/jquery.js "> </ script >
24+
25+ < script type ="text/javascript " charset ="utf-8 " src ="js/app.js "> </ script >
26+
27+
28+ </ head >
29+ < body >
30+ < div class ="nav_wrap ">
31+ < iframe id ="nav " src ="class_list.html?1 "> </ iframe >
32+ < div id ="resizer "> </ div >
33+ </ div >
34+
35+ < div id ="main " tabindex ="-1 ">
36+ < div id ="header ">
37+ < div id ="menu ">
38+
39+ < a href ="_index.html "> Index (L)</ a > »
40+
41+
42+ < span class ="title "> LaunchDarkly</ span >
43+
44+ </ div >
45+
46+ < div id ="search ">
47+
48+ < a class ="full_list_link " id ="class_list_link "
49+ href ="class_list.html ">
50+
51+ < svg width ="24 " height ="24 ">
52+ < rect x ="0 " y ="4 " width ="24 " height ="4 " rx ="1 " ry ="1 "> </ rect >
53+ < rect x ="0 " y ="12 " width ="24 " height ="4 " rx ="1 " ry ="1 "> </ rect >
54+ < rect x ="0 " y ="20 " width ="24 " height ="4 " rx ="1 " ry ="1 "> </ rect >
55+ </ svg >
56+ </ a >
57+
58+ </ div >
59+ < div class ="clear "> </ div >
60+ </ div >
61+
62+ < div id ="content "> < h1 > Module: LaunchDarkly
63+
64+
65+
66+ </ h1 >
67+ < div class ="box_info ">
68+
69+
70+
71+
72+
73+
74+
75+
76+
77+
78+
79+ < dl >
80+ < dt > Defined in:</ dt >
81+ < dd > lib/ldclient-rb.rb< span class ="defines "> ,< br />
82+ lib/ldclient-rb/cache_store.rb,< br /> lib/ldclient-rb/config.rb,< br /> lib/ldclient-rb/context.rb,< br /> lib/ldclient-rb/evaluation_detail.rb,< br /> lib/ldclient-rb/events.rb,< br /> lib/ldclient-rb/expiring_cache.rb,< br /> lib/ldclient-rb/flags_state.rb,< br /> lib/ldclient-rb/impl.rb,< br /> lib/ldclient-rb/in_memory_store.rb,< br /> lib/ldclient-rb/ldclient.rb,< br /> lib/ldclient-rb/memoized_value.rb,< br /> lib/ldclient-rb/migrations.rb,< br /> lib/ldclient-rb/non_blocking_thread_pool.rb,< br /> lib/ldclient-rb/polling.rb,< br /> lib/ldclient-rb/reference.rb,< br /> lib/ldclient-rb/requestor.rb,< br /> lib/ldclient-rb/simple_lru_cache.rb,< br /> lib/ldclient-rb/stream.rb,< br /> lib/ldclient-rb/util.rb,< br /> lib/ldclient-rb/version.rb,< br /> lib/ldclient-rb/impl/big_segments.rb,< br /> lib/ldclient-rb/impl/broadcaster.rb,< br /> lib/ldclient-rb/impl/context.rb,< br /> lib/ldclient-rb/impl/context_filter.rb,< br /> lib/ldclient-rb/impl/data_source.rb,< br /> lib/ldclient-rb/impl/data_store.rb,< br /> lib/ldclient-rb/impl/dependency_tracker.rb,< br /> lib/ldclient-rb/impl/diagnostic_events.rb,< br /> lib/ldclient-rb/impl/evaluation_with_hook_result.rb,< br /> lib/ldclient-rb/impl/evaluator.rb,< br /> lib/ldclient-rb/impl/evaluator_bucketing.rb,< br /> lib/ldclient-rb/impl/evaluator_helpers.rb,< br /> lib/ldclient-rb/impl/evaluator_operators.rb,< br /> lib/ldclient-rb/impl/event_sender.rb,< br /> lib/ldclient-rb/impl/event_summarizer.rb,< br /> lib/ldclient-rb/impl/event_types.rb,< br /> lib/ldclient-rb/impl/flag_tracker.rb,< br /> lib/ldclient-rb/impl/repeating_task.rb,< br /> lib/ldclient-rb/impl/sampler.rb,< br /> lib/ldclient-rb/impl/store_client_wrapper.rb,< br /> lib/ldclient-rb/impl/store_data_set_sorter.rb,< br /> lib/ldclient-rb/impl/unbounded_pool.rb,< br /> lib/ldclient-rb/impl/util.rb,< br /> lib/ldclient-rb/integrations/consul.rb,< br /> lib/ldclient-rb/integrations/dynamodb.rb,< br /> lib/ldclient-rb/integrations/file_data.rb,< br /> lib/ldclient-rb/integrations/redis.rb,< br /> lib/ldclient-rb/integrations/test_data.rb,< br /> lib/ldclient-rb/interfaces/big_segment_store.rb,< br /> lib/ldclient-rb/interfaces/data_source.rb,< br /> lib/ldclient-rb/interfaces/data_store.rb,< br /> lib/ldclient-rb/interfaces/feature_store.rb,< br /> lib/ldclient-rb/interfaces/flag_tracker.rb,< br /> lib/ldclient-rb/interfaces/hooks.rb,< br /> lib/ldclient-rb/interfaces/migrations.rb,< br /> lib/ldclient-rb/interfaces/plugins.rb,< br /> lib/ldclient-rb/impl/integrations/consul_impl.rb,< br /> lib/ldclient-rb/impl/integrations/dynamodb_impl.rb,< br /> lib/ldclient-rb/impl/integrations/file_data_source.rb,< br /> lib/ldclient-rb/impl/integrations/redis_impl.rb,< br /> lib/ldclient-rb/impl/migrations/migrator.rb,< br /> lib/ldclient-rb/impl/migrations/tracker.rb,< br /> lib/ldclient-rb/impl/model/clause.rb,< br /> lib/ldclient-rb/impl/model/feature_flag.rb,< br /> lib/ldclient-rb/impl/model/preprocessed_data.rb,< br /> lib/ldclient-rb/impl/model/segment.rb,< br /> lib/ldclient-rb/impl/model/serialization.rb,< br /> lib/ldclient-rb/integrations/test_data/flag_builder.rb,< br /> lib/ldclient-rb/integrations/util/store_wrapper.rb</ span >
83+ </ dd >
84+ </ dl >
85+
86+ </ div >
87+
88+ < h2 > Overview</ h2 > < div class ="docstring ">
89+ < div class ="discussion ">
90+ < p > General implementation notes about the data model classes in LaunchDarkly::Impl::Model--</ p >
91+
92+ < p > As soon as we receive flag/segment JSON data from LaunchDarkly (or, read it from a database), we
93+ transform it into the model classes FeatureFlag, Segment, etc. The constructor of each of these
94+ classes takes a hash (the parsed JSON), and transforms it into an internal representation that
95+ is more efficient for evaluations.</ p >
96+
97+ < p > Validation works as follows:</ p >
98+
99+ < ul >
100+ < li > A property value that is of the correct type, but is invalid for other reasons (for example,
101+ if a flag rule refers to variation index 5, but there are only 2 variations in the flag), does
102+ not prevent the flag from being parsed and stored. It does cause a warning to be logged, if a
103+ logger was passed to the constructor.</ li >
104+ < li > If a value is completely invalid for the schema, the constructor may throw an
105+ exception, causing the whole data set to be rejected. This is consistent with the behavior of
106+ the strongly-typed SDKs.</ li >
107+ </ ul >
108+
109+ < p > Currently, the model classes also retain the original hash of the parsed JSON. This is because
110+ we may need to re-serialize them to JSON, and building the JSON on the fly would be very
111+ inefficient, so each model class has a to_json method that just returns the same Hash. If we
112+ are able in the future to either use a custom streaming serializer, or pass the JSON data
113+ straight through from LaunchDarkly to a database instead of re-serializing, we could stop
114+ retaining this data.</ p >
115+
116+
117+ </ div >
118+ </ div >
119+ < div class ="tags ">
120+
121+
122+ </ div > < h2 > Defined Under Namespace</ h2 >
123+ < p class ="children ">
124+
125+
126+ < strong class ="modules "> Modules:</ strong > < span class ='object_link '> < a href ="LaunchDarkly/BigSegmentsStatus.html " title ="LaunchDarkly::BigSegmentsStatus (module) "> BigSegmentsStatus</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/EventProcessorMethods.html " title ="LaunchDarkly::EventProcessorMethods (module) "> EventProcessorMethods</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Integrations.html " title ="LaunchDarkly::Integrations (module) "> Integrations</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Interfaces.html " title ="LaunchDarkly::Interfaces (module) "> Interfaces</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Migrations.html " title ="LaunchDarkly::Migrations (module) "> Migrations</ a > </ span >
127+
128+
129+
130+ < strong class ="classes "> Classes:</ strong > < span class ='object_link '> < a href ="LaunchDarkly/BigSegmentsConfig.html " title ="LaunchDarkly::BigSegmentsConfig (class) "> BigSegmentsConfig</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Config.html " title ="LaunchDarkly::Config (class) "> Config</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/EvaluationDetail.html " title ="LaunchDarkly::EvaluationDetail (class) "> EvaluationDetail</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/EvaluationReason.html " title ="LaunchDarkly::EvaluationReason (class) "> EvaluationReason</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/FeatureFlagsState.html " title ="LaunchDarkly::FeatureFlagsState (class) "> FeatureFlagsState</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/InMemoryFeatureStore.html " title ="LaunchDarkly::InMemoryFeatureStore (class) "> InMemoryFeatureStore</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/LDClient.html " title ="LaunchDarkly::LDClient (class) "> LDClient</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/LDContext.html " title ="LaunchDarkly::LDContext (class) "> LDContext</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Reference.html " title ="LaunchDarkly::Reference (class) "> Reference</ a > </ span > , < span class ='object_link '> < a href ="LaunchDarkly/Result.html " title ="LaunchDarkly::Result (class) "> Result</ a > </ span >
131+
132+
133+ </ p >
134+
135+
136+ < h2 >
137+ Constant Summary
138+ < small > < a href ="# " class ="constants_summary_toggle "> collapse</ a > </ small >
139+ </ h2 >
140+
141+ < dl class ="constants ">
142+
143+ < dt id ="VERSION-constant " class =""> VERSION =
144+ < div class ="docstring ">
145+ < div class ="discussion ">
146+ < p > x-release-please-version</ p >
147+
148+
149+ </ div >
150+ </ div >
151+ < div class ="tags ">
152+
153+
154+ </ div >
155+ </ dt >
156+ < dd > < pre class ="code "> < span class ='tstring '> < span class ='tstring_beg '> "</ span > < span class ='tstring_content '> 8.11.1</ span > < span class ='tstring_end '> "</ span > </ span > </ pre > </ dd >
157+
158+ </ dl >
159+
160+
161+
162+
163+
164+
165+
166+
167+
168+
169+ </ div >
170+
171+ < div id ="footer ">
172+ Generated on Fri Oct 10 18:00:26 2025 by
173+ < a href ="https://yardoc.org " title ="Yay! A Ruby Documentation Tool " target ="_parent "> yard</ a >
174+ 0.9.37 (ruby-3.2.9).
175+ </ div >
176+
177+ </ div >
178+ </ body >
179+ </ html >
0 commit comments