launchdarkly-openfeature-server-sdk 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1120d07e2dfc8caa553538ee9e81a28c0d8e49086251f5b267f6b7a81713beb8
4
+ data.tar.gz: aae128996f603273d9ca9eb4ea1dba80a5b14f67f027cf20840b87abb2973aca
5
+ SHA512:
6
+ metadata.gz: 7fe4363d6defdd32fa8ee9c1cd829d59d8945f7af4a2bd43532da96580d50a2d6068a2d116f954c418e89ba4acaef5fc793f44d84ca0374f98fd139941238fd1
7
+ data.tar.gz: 4e22e388a089408a98fab7ffffb299df6669749a5a2e6e0fc5db4e4b8c5f079ff7612709ca3d525df6f5b772a27357ff737287c77433a07da84275c8fe9cb25e
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.0.0"
3
+ }
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,902 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ TargetRubyVersion: 3.1
8
+ Include:
9
+ - lib/**/*.rb
10
+ - spec/**/*.rb
11
+ NewCops: disable
12
+
13
+ Naming/AccessorMethodName:
14
+ Description: Check the naming of accessor methods for get_/set_.
15
+ Enabled: false
16
+
17
+ Style/AccessModifierDeclarations:
18
+ Description: 'Access modifiers should be declared to apply to a group of methods or inline before each method, depending on configuration.'
19
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
20
+ Enabled: false
21
+
22
+ Style/Alias:
23
+ Description: 'Use alias_method instead of alias.'
24
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
25
+ Enabled: false
26
+
27
+ Style/ArrayJoin:
28
+ Description: 'Use Array#join instead of Array#*.'
29
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join'
30
+ Enabled: false
31
+
32
+ Style/AsciiComments:
33
+ Description: 'Use only ascii symbols in comments.'
34
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments'
35
+ Enabled: false
36
+
37
+ Naming/AsciiIdentifiers:
38
+ Description: 'Use only ascii symbols in identifiers.'
39
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers'
40
+ Enabled: false
41
+
42
+ Naming/VariableName:
43
+ Description: 'Makes sure that all variables use the configured style, snake_case or camelCase, for their names.'
44
+ Enabled: false
45
+
46
+ Style/Attr:
47
+ Description: 'Checks for uses of Module#attr.'
48
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr'
49
+ Enabled: false
50
+
51
+ Metrics/AbcSize:
52
+ Description: 'Checks that the ABC size of methods is not higher than the configured maximum.'
53
+ Enabled: false
54
+
55
+ Metrics/BlockLength:
56
+ Description: 'Checks if the length of a block exceeds some maximum value.'
57
+ Enabled: false
58
+
59
+ Metrics/BlockNesting:
60
+ Description: 'Avoid excessive block nesting'
61
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
62
+ Enabled: false
63
+
64
+ Style/CaseEquality:
65
+ Description: 'Avoid explicit use of the case equality operator(===).'
66
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality'
67
+ Enabled: false
68
+
69
+ Style/CharacterLiteral:
70
+ Description: 'Checks for uses of character literals.'
71
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals'
72
+ Enabled: false
73
+
74
+ Style/ClassAndModuleChildren:
75
+ Description: 'Checks style of children classes and modules.'
76
+ Enabled: true
77
+ EnforcedStyle: nested
78
+
79
+ Metrics/ClassLength:
80
+ Description: 'Avoid classes longer than 100 lines of code.'
81
+ Enabled: false
82
+
83
+ Metrics/ModuleLength:
84
+ Description: 'Avoid modules longer than 100 lines of code.'
85
+ Enabled: false
86
+
87
+ Style/ClassVars:
88
+ Description: 'Avoid the use of class variables.'
89
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars'
90
+ Enabled: false
91
+
92
+ Style/CollectionMethods:
93
+ Enabled: true
94
+ PreferredMethods:
95
+ find: detect
96
+ inject: reduce
97
+ collect: map
98
+ find_all: select
99
+
100
+ Style/ColonMethodCall:
101
+ Description: 'Do not use :: for method call.'
102
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons'
103
+ Enabled: false
104
+
105
+ Style/CommentAnnotation:
106
+ Description: >-
107
+ Checks formatting of special comments
108
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
109
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords'
110
+ Enabled: false
111
+
112
+ Metrics/CyclomaticComplexity:
113
+ Description: >-
114
+ A complexity metric that is strongly correlated to the number
115
+ of test cases needed to validate a method.
116
+ Enabled: false
117
+
118
+ Style/PreferredHashMethods:
119
+ Description: 'Checks for use of deprecated Hash methods.'
120
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-key'
121
+ Enabled: false
122
+
123
+ Style/Documentation:
124
+ Description: 'Document classes and non-namespace modules.'
125
+ Enabled: false
126
+
127
+ Style/DoubleNegation:
128
+ Description: 'Checks for uses of double negation (!!).'
129
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang'
130
+ Enabled: false
131
+
132
+ Style/EachWithObject:
133
+ Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
134
+ Enabled: false
135
+
136
+ Style/EmptyLiteral:
137
+ Description: 'Prefer literals to Array.new/Hash.new/String.new.'
138
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash'
139
+ Enabled: false
140
+
141
+ # Checks whether the source file has a utf-8 encoding comment or not
142
+ # AutoCorrectEncodingComment must match the regex
143
+ # /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
144
+ Style/Encoding:
145
+ Enabled: false
146
+
147
+ Style/EvenOdd:
148
+ Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
149
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
150
+ Enabled: false
151
+
152
+ Naming/FileName:
153
+ Description: 'Use snake_case for source file names.'
154
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files'
155
+ Enabled: false
156
+
157
+ Lint/FlipFlop:
158
+ Description: 'Checks for flip flops'
159
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops'
160
+ Enabled: false
161
+
162
+ Style/FrozenStringLiteralComment:
163
+ Description: 'Helps you transition from mutable string literals to frozen string literals.'
164
+ Enabled: false
165
+
166
+ Style/FormatString:
167
+ Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
168
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf'
169
+ Enabled: false
170
+
171
+ Style/GlobalVars:
172
+ Description: 'Do not introduce global variables.'
173
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars'
174
+ Reference: 'https://www.zenspider.com/ruby/quickref.html'
175
+ Enabled: false
176
+
177
+ Style/GuardClause:
178
+ Description: 'Check for conditionals that can be replaced with guard clauses'
179
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
180
+ Enabled: false
181
+
182
+ Style/IfUnlessModifier:
183
+ Description: >-
184
+ Favor modifier if/unless usage when you have a
185
+ single-line body.
186
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier'
187
+ Enabled: false
188
+
189
+ Style/IfWithSemicolon:
190
+ Description: 'Do not use if x; .... Use the ternary operator instead.'
191
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs'
192
+ Enabled: false
193
+
194
+ Style/InlineComment:
195
+ Description: 'Avoid inline comments.'
196
+ Enabled: false
197
+
198
+ Style/Lambda:
199
+ Description: 'Use the new lambda literal syntax for single-line blocks.'
200
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
201
+ Enabled: false
202
+
203
+ Style/LambdaCall:
204
+ Description: 'Use lambda.call(...) instead of lambda.(...).'
205
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call'
206
+ Enabled: false
207
+
208
+ Style/LineEndConcatenation:
209
+ Description: >-
210
+ Use \ instead of + or << to concatenate two string literals at
211
+ line end.
212
+ Enabled: false
213
+
214
+ Layout/LineLength:
215
+ Description: 'Limit lines to 150 characters.'
216
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
217
+ Max: 180
218
+
219
+ Metrics/MethodLength:
220
+ Description: 'Avoid methods longer than 10 lines of code.'
221
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
222
+ Enabled: false
223
+
224
+ Style/ModuleFunction:
225
+ Description: 'Checks for usage of `extend self` in modules.'
226
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function'
227
+ Enabled: false
228
+
229
+ Style/NegatedIf:
230
+ Description: >-
231
+ Favor unless over if for negative conditions
232
+ (or control flow or).
233
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives'
234
+ Enabled: true
235
+
236
+ Style/NegatedWhile:
237
+ Description: 'Favor until over while for negative conditions.'
238
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives'
239
+ Enabled: true
240
+
241
+ Style/Next:
242
+ Description: 'Use `next` to skip iteration instead of a condition at the end.'
243
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
244
+ Enabled: false
245
+
246
+ Style/NilComparison:
247
+ Description: 'Prefer x.nil? to x == nil.'
248
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
249
+ Enabled: false
250
+
251
+ Style/Not:
252
+ Description: 'Use ! instead of not.'
253
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not'
254
+ Enabled: false
255
+
256
+ Style/NumericLiterals:
257
+ Description: >-
258
+ Add underscores to large numeric literals to improve their
259
+ readability.
260
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics'
261
+ Enabled: false
262
+
263
+ Style/OneLineConditional:
264
+ Description: >-
265
+ Favor the ternary operator(?:) over
266
+ if/then/else/end constructs.
267
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator'
268
+ Enabled: false
269
+
270
+ Naming/BinaryOperatorParameterName:
271
+ Description: 'When defining binary operators, name the argument other.'
272
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg'
273
+ Enabled: false
274
+
275
+ Metrics/ParameterLists:
276
+ Description: 'Avoid parameter lists longer than three or four parameters.'
277
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
278
+ Enabled: false
279
+
280
+ Metrics/PerceivedComplexity:
281
+ Enabled: false
282
+
283
+ Style/PercentLiteralDelimiters:
284
+ Description: 'Use `%`-literal delimiters consistently'
285
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces'
286
+ Enabled: false
287
+
288
+ Style/PerlBackrefs:
289
+ Description: 'Avoid Perl-style regex back references.'
290
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
291
+ Enabled: false
292
+
293
+ Naming/PredicateName:
294
+ Description: 'Check the names of predicate methods.'
295
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
296
+ ForbiddenPrefixes:
297
+ - is_
298
+ Exclude:
299
+ - spec/**/*
300
+
301
+ Style/Proc:
302
+ Description: 'Use proc instead of Proc.new.'
303
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc'
304
+ Enabled: false
305
+
306
+ Style/RaiseArgs:
307
+ Description: 'Checks the arguments passed to raise/fail.'
308
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages'
309
+ Enabled: false
310
+
311
+ Style/RegexpLiteral:
312
+ Description: 'Use / or %r around regular expressions.'
313
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r'
314
+ Enabled: false
315
+
316
+ Style/SelfAssignment:
317
+ Description: >-
318
+ Checks for places where self-assignment shorthand should have
319
+ been used.
320
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
321
+ Enabled: false
322
+
323
+ Style/SingleLineBlockParams:
324
+ Description: 'Enforces the names of some block params.'
325
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks'
326
+ Enabled: false
327
+
328
+ Style/SingleLineMethods:
329
+ Description: 'Avoid single-line methods.'
330
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods'
331
+ Enabled: false
332
+
333
+ Style/SignalException:
334
+ Description: 'Checks for proper usage of fail and raise.'
335
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
336
+ Enabled: false
337
+
338
+ Style/SpecialGlobalVars:
339
+ Description: 'Avoid Perl-style global variables.'
340
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms'
341
+ Enabled: false
342
+
343
+ Style/StringLiterals:
344
+ Description: 'Checks if uses of quotes match the configured preference.'
345
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
346
+ EnforcedStyle: double_quotes
347
+ Enabled: false
348
+
349
+ Style/TrailingCommaInArguments:
350
+ Description: 'Checks for trailing comma in argument lists.'
351
+ StyleGuide: '#no-trailing-params-comma'
352
+ Enabled: true
353
+
354
+ Style/TrailingCommaInArrayLiteral:
355
+ Description: 'Checks for trailing comma in array and hash literals.'
356
+ EnforcedStyleForMultiline: comma
357
+
358
+ Style/TrailingCommaInHashLiteral:
359
+ Description: 'Checks for trailing comma in array and hash literals.'
360
+ EnforcedStyleForMultiline: comma
361
+
362
+ Style/TrivialAccessors:
363
+ Description: 'Prefer attr_* methods to trivial readers/writers.'
364
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family'
365
+ Enabled: false
366
+
367
+ Style/VariableInterpolation:
368
+ Description: >-
369
+ Don't interpolate global, instance and class variables
370
+ directly in strings.
371
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate'
372
+ Enabled: false
373
+
374
+ Style/WhenThen:
375
+ Description: 'Use when x then ... for one-line cases.'
376
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases'
377
+ Enabled: false
378
+
379
+ Style/WhileUntilModifier:
380
+ Description: >-
381
+ Favor modifier while/until usage when you have a
382
+ single-line body.
383
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier'
384
+ Enabled: false
385
+
386
+ Style/WordArray:
387
+ Description: 'Use %w or %W for arrays of words.'
388
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w'
389
+ Enabled: false
390
+
391
+ # Layout
392
+ Layout/DotPosition:
393
+ Description: 'Checks the position of the dot in multi-line method calls.'
394
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
395
+ EnforcedStyle: leading
396
+
397
+ Layout/ExtraSpacing:
398
+ Description: 'Do not use unnecessary spacing.'
399
+ Enabled: true
400
+ AllowBeforeTrailingComments: true
401
+
402
+ Layout/MultilineOperationIndentation:
403
+ Description: >-
404
+ Checks indentation of binary operations that span more than
405
+ one line.
406
+ Enabled: true
407
+ EnforcedStyle: indented
408
+
409
+ Layout/InitialIndentation:
410
+ Description: >-
411
+ Checks the indentation of the first non-blank non-comment line in a file.
412
+ Enabled: false
413
+
414
+ Layout/SpaceInsideArrayLiteralBrackets:
415
+ Description: "Checks that brackets used for array literals have or don't have surrounding space depending on configuration."
416
+ Enabled: false
417
+
418
+ Layout/TrailingWhitespace:
419
+ Description: "Ensures all trailing whitespace has been removed"
420
+ Enabled: true
421
+
422
+ # Lint
423
+
424
+ Lint/AmbiguousOperator:
425
+ Description: >-
426
+ Checks for ambiguous operators in the first argument of a
427
+ method invocation without parentheses.
428
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
429
+ Enabled: false
430
+
431
+ Lint/AmbiguousRegexpLiteral:
432
+ Description: >-
433
+ Checks for ambiguous regexp literals in the first argument of
434
+ a method invocation without parenthesis.
435
+ Enabled: false
436
+
437
+ Lint/AssignmentInCondition:
438
+ Description: "Don't use assignment in conditions."
439
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
440
+ Enabled: false
441
+
442
+ Lint/CircularArgumentReference:
443
+ Description: "Don't refer to the keyword argument in the default value."
444
+ Enabled: false
445
+
446
+ Layout/ConditionPosition:
447
+ Description: >-
448
+ Checks for condition placed in a confusing position relative to
449
+ the keyword.
450
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
451
+ Enabled: false
452
+
453
+ Lint/DeprecatedClassMethods:
454
+ Description: 'Check for deprecated class method calls.'
455
+ Enabled: false
456
+
457
+ Lint/DuplicateHashKey:
458
+ Description: 'Check for duplicate keys in hash literals.'
459
+ Enabled: false
460
+
461
+ Lint/EachWithObjectArgument:
462
+ Description: 'Check for immutable argument given to each_with_object.'
463
+ Enabled: false
464
+
465
+ Lint/ElseLayout:
466
+ Description: 'Check for odd code arrangement in an else block.'
467
+ Enabled: false
468
+
469
+ Lint/FormatParameterMismatch:
470
+ Description: 'The number of parameters to format/sprint must match the fields.'
471
+ Enabled: false
472
+
473
+ Lint/SuppressedException:
474
+ Description: "Don't suppress exception."
475
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
476
+ Enabled: false
477
+
478
+ Lint/LiteralAsCondition:
479
+ Description: 'Checks of literals used in conditions.'
480
+ Enabled: false
481
+
482
+ Lint/LiteralInInterpolation:
483
+ Description: 'Checks for literals used in interpolation.'
484
+ Enabled: false
485
+
486
+ Lint/Loop:
487
+ Description: >-
488
+ Use Kernel#loop with break rather than begin/end/until or
489
+ begin/end/while for post-loop tests.
490
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
491
+ Enabled: false
492
+
493
+ Lint/NestedMethodDefinition:
494
+ Description: 'Do not use nested method definitions.'
495
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
496
+ Enabled: false
497
+
498
+ Lint/NonLocalExitFromIterator:
499
+ Description: 'Do not use return in iterator to cause non-local exit.'
500
+ Enabled: false
501
+
502
+ Lint/ParenthesesAsGroupedExpression:
503
+ Description: >-
504
+ Checks for method calls with a space before the opening
505
+ parenthesis.
506
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
507
+ Enabled: false
508
+
509
+ Lint/RequireParentheses:
510
+ Description: >-
511
+ Use parentheses in the method call to avoid confusion
512
+ about precedence.
513
+ Enabled: false
514
+
515
+ Lint/UnderscorePrefixedVariableName:
516
+ Description: 'Do not use prefix `_` for a variable that is used.'
517
+ Enabled: false
518
+
519
+ Lint/RedundantCopDisableDirective:
520
+ Description: >-
521
+ Checks for rubocop:disable comments that can be removed.
522
+ Note: this cop is not disabled when disabling all cops.
523
+ It must be explicitly disabled.
524
+ Enabled: false
525
+
526
+ Lint/Void:
527
+ Description: 'Possible use of operator/literal/variable in void context.'
528
+ Enabled: false
529
+
530
+ # Performance
531
+
532
+ Performance/CaseWhenSplat:
533
+ Description: >-
534
+ Place `when` conditions that use splat at the end
535
+ of the list of `when` branches.
536
+ Enabled: false
537
+
538
+ Performance/Count:
539
+ Description: >-
540
+ Use `count` instead of `select...size`, `reject...size`,
541
+ `select...count`, `reject...count`, `select...length`,
542
+ and `reject...length`.
543
+ Enabled: false
544
+
545
+ Performance/Detect:
546
+ Description: >-
547
+ Use `detect` instead of `select.first`, `find_all.first`,
548
+ `select.last`, and `find_all.last`.
549
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
550
+ Enabled: false
551
+
552
+ Performance/FlatMap:
553
+ Description: >-
554
+ Use `Enumerable#flat_map`
555
+ instead of `Enumerable#map...Array#flatten(1)`
556
+ or `Enumberable#collect..Array#flatten(1)`
557
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
558
+ Enabled: false
559
+
560
+ Performance/ReverseEach:
561
+ Description: 'Use `reverse_each` instead of `reverse.each`.'
562
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
563
+ Enabled: false
564
+
565
+ Style/Sample:
566
+ Description: >-
567
+ Use `sample` instead of `shuffle.first`,
568
+ `shuffle.last`, and `shuffle[Fixnum]`.
569
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
570
+ Enabled: false
571
+
572
+ Performance/Size:
573
+ Description: >-
574
+ Use `size` instead of `count` for counting
575
+ the number of elements in `Array` and `Hash`.
576
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
577
+ Enabled: false
578
+
579
+ Performance/StringReplacement:
580
+ Description: >-
581
+ Use `tr` instead of `gsub` when you are replacing the same
582
+ number of characters. Use `delete` instead of `gsub` when
583
+ you are deleting characters.
584
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
585
+ Enabled: false
586
+
587
+ # Disabled temporarily while we bring code base inline
588
+ Layout/ArgumentAlignment:
589
+ Enabled: false
590
+
591
+ Layout/ArrayAlignment:
592
+ Enabled: false
593
+
594
+ Layout/BlockEndNewline:
595
+ Enabled: false
596
+
597
+ Layout/CaseIndentation:
598
+ Enabled: false
599
+
600
+ Layout/ClosingHeredocIndentation:
601
+ Enabled: false
602
+
603
+ Layout/ClosingParenthesisIndentation:
604
+ Enabled: false
605
+
606
+ Layout/CommentIndentation:
607
+ Enabled: false
608
+
609
+ Layout/ElseAlignment:
610
+ Enabled: false
611
+
612
+ Layout/EmptyLineAfterGuardClause:
613
+ Enabled: false
614
+
615
+ Layout/EmptyLineBetweenDefs:
616
+ Enabled: false
617
+
618
+ Layout/EmptyLines:
619
+ Enabled: false
620
+
621
+ Layout/EmptyLinesAroundBlockBody:
622
+ Enabled: false
623
+
624
+ Layout/EmptyLinesAroundMethodBody:
625
+ Enabled: false
626
+
627
+ Layout/EmptyLinesAroundModuleBody:
628
+ Enabled: false
629
+
630
+ Layout/EndAlignment:
631
+ Enabled: false
632
+
633
+ Layout/FirstArgumentIndentation:
634
+ Enabled: false
635
+
636
+ Layout/FirstHashElementIndentation:
637
+ Enabled: false
638
+
639
+ Layout/HashAlignment:
640
+ Enabled: false
641
+
642
+ Layout/HeredocIndentation:
643
+ Enabled: false
644
+
645
+ Layout/IndentationWidth:
646
+ Enabled: false
647
+
648
+ Layout/LeadingCommentSpace:
649
+ Enabled: false
650
+
651
+ Layout/LeadingEmptyLines:
652
+ Enabled: false
653
+
654
+ Layout/MultilineArrayBraceLayout:
655
+ Enabled: false
656
+
657
+ Layout/MultilineBlockLayout:
658
+ Enabled: false
659
+
660
+ Layout/MultilineHashBraceLayout:
661
+ Enabled: false
662
+
663
+ Layout/MultilineMethodCallBraceLayout:
664
+ Enabled: false
665
+
666
+ Layout/MultilineMethodCallIndentation:
667
+ Enabled: false
668
+
669
+ Layout/ParameterAlignment:
670
+ Enabled: false
671
+
672
+ Layout/SpaceAfterComma:
673
+ Enabled: false
674
+
675
+ Layout/SpaceAroundBlockParameters:
676
+ Enabled: false
677
+
678
+ Layout/SpaceAroundEqualsInParameterDefault:
679
+ Enabled: false
680
+
681
+ Layout/SpaceAroundOperators:
682
+ Enabled: false
683
+
684
+ Layout/SpaceBeforeBlockBraces:
685
+ Enabled: false
686
+
687
+ Layout/SpaceBeforeComma:
688
+ Enabled: false
689
+
690
+ Layout/SpaceInsideBlockBraces:
691
+ Enabled: false
692
+
693
+ Layout/SpaceInsideHashLiteralBraces:
694
+ Enabled: false
695
+
696
+ Layout/SpaceInsideReferenceBrackets:
697
+ Enabled: false
698
+
699
+ Layout/TrailingEmptyLines:
700
+ Enabled: false
701
+
702
+ Lint/ConstantDefinitionInBlock:
703
+ Enabled: false
704
+
705
+ Lint/IneffectiveAccessModifier:
706
+ Enabled: false
707
+
708
+ Lint/MissingCopEnableDirective:
709
+ Enabled: false
710
+
711
+ Lint/RedundantRequireStatement:
712
+ Enabled: false
713
+
714
+ Lint/StructNewOverride:
715
+ Enabled: false
716
+
717
+ Lint/UnusedBlockArgument:
718
+ Enabled: false
719
+
720
+ Lint/UnusedMethodArgument:
721
+ Enabled: false
722
+
723
+ Lint/UselessAccessModifier:
724
+ Enabled: false
725
+
726
+ Lint/UselessAssignment:
727
+ Enabled: false
728
+
729
+ Lint/UselessMethodDefinition:
730
+ Enabled: false
731
+
732
+ Naming/BlockParameterName:
733
+ Enabled: false
734
+
735
+ Naming/HeredocDelimiterNaming:
736
+ Enabled: false
737
+
738
+ Naming/MethodParameterName:
739
+ Enabled: false
740
+
741
+ Naming/RescuedExceptionsVariableName:
742
+ Enabled: false
743
+
744
+ Naming/VariableNumber:
745
+ Enabled: false
746
+
747
+ Style/AccessorGrouping:
748
+ Enabled: false
749
+
750
+ Style/AndOr:
751
+ Enabled: false
752
+
753
+ Style/BlockDelimiters:
754
+ Enabled: false
755
+
756
+ Style/CaseLikeIf:
757
+ Enabled: false
758
+
759
+ Style/CombinableLoops:
760
+ Enabled: false
761
+
762
+ Style/CommentedKeyword:
763
+ Enabled: false
764
+
765
+ Style/ConditionalAssignment:
766
+ Enabled: false
767
+
768
+ Style/DefWithParentheses:
769
+ Enabled: false
770
+
771
+ Style/EmptyElse:
772
+ Enabled: false
773
+
774
+ Style/EmptyMethod:
775
+ Enabled: false
776
+
777
+ Style/ExplicitBlockArgument:
778
+ Enabled: false
779
+
780
+ Style/For:
781
+ Enabled: false
782
+
783
+ Style/FormatStringToken:
784
+ Enabled: false
785
+
786
+ Style/GlobalStdStream:
787
+ Enabled: false
788
+
789
+ Style/HashEachMethods:
790
+ Enabled: false
791
+
792
+ Style/HashSyntax:
793
+ Enabled: false
794
+
795
+ Style/InfiniteLoop:
796
+ Enabled: false
797
+
798
+ Style/InverseMethods:
799
+ Enabled: false
800
+
801
+ Style/MethodCallWithoutArgsParentheses:
802
+ Enabled: false
803
+
804
+ Style/MissingRespondToMissing:
805
+ Enabled: false
806
+
807
+ Style/MultilineIfThen:
808
+ Enabled: false
809
+
810
+ Style/MultilineTernaryOperator:
811
+ Enabled: false
812
+
813
+ Style/MultipleComparison:
814
+ Enabled: false
815
+
816
+ Style/MutableConstant:
817
+ Enabled: false
818
+
819
+ Style/NumericPredicate:
820
+ Enabled: false
821
+
822
+ Style/OptionalBooleanParameter:
823
+ Enabled: false
824
+
825
+ Style/ParallelAssignment:
826
+ Enabled: false
827
+
828
+ Style/RedundantAssignment:
829
+ Enabled: false
830
+
831
+ Style/RedundantBegin:
832
+ Enabled: false
833
+
834
+ Style/RedundantCondition:
835
+ Enabled: true
836
+
837
+ Style/RedundantException:
838
+ Enabled: false
839
+
840
+ Style/RedundantFileExtensionInRequire:
841
+ Enabled: false
842
+
843
+ Style/RedundantParentheses:
844
+ Enabled: true
845
+
846
+ Style/RedundantRegexpEscape:
847
+ Enabled: false
848
+
849
+ Style/RedundantReturn:
850
+ Enabled: true
851
+
852
+ Style/RedundantSelf:
853
+ Enabled: false
854
+
855
+ Style/RescueStandardError:
856
+ Enabled: false
857
+
858
+ Style/SafeNavigation:
859
+ Enabled: false
860
+
861
+ Style/Semicolon:
862
+ Enabled: true
863
+ AllowAsExpressionSeparator: true
864
+
865
+ Style/SlicingWithRange:
866
+ Enabled: false
867
+
868
+ Style/SoleNestedConditional:
869
+ Enabled: false
870
+
871
+ Style/StringConcatenation:
872
+ Enabled: false
873
+
874
+ Style/SymbolArray:
875
+ Enabled: false
876
+
877
+ Style/SymbolProc:
878
+ Enabled: false
879
+
880
+ Style/TernaryParentheses:
881
+ Enabled: false
882
+
883
+ Style/TrailingUnderscoreVariable:
884
+ Enabled: false
885
+
886
+ Style/WhileUntilDo:
887
+ Enabled: false
888
+
889
+ Style/ZeroLengthPredicate:
890
+ Enabled: false
891
+
892
+ RSpec/FilePath:
893
+ SpecSuffixOnly: true
894
+
895
+ RSpec/ExampleLength:
896
+ Enabled: false
897
+
898
+ RSpec/MultipleExpectations:
899
+ Enabled: false
900
+
901
+ RSpec/MultipleMemoizedHelpers:
902
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in openfeature-ruby-server.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "rspec", "~> 3.0"
data/LICENSE.txt ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2024 Catamorphic, Co.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,173 @@
1
+ # LaunchDarkly OpenFeature provider for the Server-Side SDK for Ruby
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/launchdarkly-openfeature-server-sdk.svg)](http://badge.fury.io/rb/launchdarkly-openfeature-server-sdk)
4
+
5
+ [![Run CI](https://github.com/launchdarkly/openfeature-ruby-server/actions/workflows/ci.yml/badge.svg)](https://github.com/launchdarkly/openfeature-ruby-server/actions/workflows/ci.yml)
6
+ [![RubyDoc](https://img.shields.io/static/v1?label=docs+-+all+versions&message=reference&color=00add8)](https://www.rubydoc.info/gems/launchdarkly-openfeature-server-sdk)
7
+ [![GitHub Pages](https://img.shields.io/static/v1?label=docs+-+latest&message=reference&color=00add8)](https://launchdarkly.github.io/openfeature-ruby-server)
8
+
9
+ This provider allows for using LaunchDarkly with the OpenFeature SDK for Ruby.
10
+
11
+ This provider is designed primarily for use in multi-user systems such as web servers and applications. It follows the server-side LaunchDarkly model for multi-user contexts. It is not intended for use in desktop and embedded systems applications.
12
+
13
+ > [!WARNING]
14
+ > This is a beta version. The API is not stabilized and may introduce breaking changes.
15
+
16
+ > [!NOTE]
17
+ > This OpenFeature provider uses production versions of the LaunchDarkly SDK, which adhere to our standard [versioning policy](https://docs.launchdarkly.com/sdk/concepts/versioning).
18
+
19
+ # LaunchDarkly overview
20
+
21
+ [LaunchDarkly](https://www.launchdarkly.com) is a feature management platform that serves trillions of feature flags daily to help teams build better software, faster. [Get started](https://docs.launchdarkly.com/home/getting-started) using LaunchDarkly today!
22
+
23
+ [![Twitter Follow](https://img.shields.io/twitter/follow/launchdarkly.svg?style=social&label=Follow&maxAge=2592000)](https://twitter.com/intent/follow?screen_name=launchdarkly)
24
+
25
+ ## Supported Ruby versions
26
+
27
+ This version of the LaunchDarkly provider works with Ruby 3.1 and above.
28
+
29
+ ## Getting started
30
+
31
+ ### Requisites
32
+
33
+ Install the library
34
+
35
+ ```shell
36
+ $ gem install launchdarkly-openfeature-server
37
+ ```
38
+
39
+ ### Usage
40
+
41
+ ```ruby
42
+ require 'open_feature/sdk'
43
+ require 'ldclient-rb'
44
+ require 'ldclient-openfeature'
45
+
46
+ provider = LaunchDarkly::OpenFeature::Provider.new(
47
+ 'sdk-key',
48
+ LaunchDarkly::Config.new
49
+ )
50
+
51
+ OpenFeature::SDK.configure do |config|
52
+ config.set_provider(provider)
53
+ end
54
+
55
+ # Refer to OpenFeature documentation for getting a client and performing evaluations.
56
+ ```
57
+
58
+ Refer to the [SDK reference guide](https://docs.launchdarkly.com/sdk/server-side/ruby) for instructions on getting started with using the SDK.
59
+
60
+ For information on using the OpenFeature client please refer to the [OpenFeature Documentation](https://docs.openfeature.dev/docs/reference/concepts/evaluation-api/).
61
+
62
+ ## OpenFeature Specific Considerations
63
+
64
+ LaunchDarkly evaluates contexts, and it can either evaluate a single-context, or a multi-context. When using OpenFeature both single and multi-contexts must be encoded into a single `EvaluationContext`. This is accomplished by looking for an attribute named `kind` in the `EvaluationContext`.
65
+
66
+ There are 4 different scenarios related to the `kind`:
67
+ 1. There is no `kind` attribute. In this case the provider will treat the context as a single context containing a "user" kind.
68
+ 2. There is a `kind` attribute, and the value of that attribute is "multi". This will indicate to the provider that the context is a multi-context.
69
+ 3. There is a `kind` attribute, and the value of that attribute is a string other than "multi". This will indicate to the provider a single context of the kind specified.
70
+ 4. There is a `kind` attribute, and the attribute is not a string. In this case the value of the attribute will be discarded, and the context will be treated as a "user". An error message will be logged.
71
+
72
+ The `kind` attribute should be a string containing only contain ASCII letters, numbers, `.`, `_` or `-`.
73
+
74
+ The OpenFeature specification allows for an optional targeting key, but LaunchDarkly requires a key for evaluation. A targeting key must be specified for each context being evaluated. It may be specified using either `targeting_key`, as it is in the OpenFeature specification, or `key`, which is the typical LaunchDarkly identifier for the targeting key. If a `targeting_key` and a `key` are specified, then the `targeting_key` will take precedence.
75
+
76
+ There are several other attributes which have special functionality within a single or multi-context.
77
+ - A key of `privateAttributes`. Must be an array of string values.
78
+ - A key of `anonymous`. Must be a boolean value.
79
+ - A key of `name`. Must be a string.
80
+
81
+ ### Examples
82
+
83
+ #### A single user context
84
+
85
+ ```ruby
86
+ context = EvaluationContext(key: "the-key")
87
+ ```
88
+
89
+ #### A single context of kind "organization"
90
+
91
+ ```ruby
92
+ context = EvaluationContext(key: "org-key", kind: "organization")
93
+ ```
94
+
95
+ #### A multi-context containing a "user" and an "organization"
96
+
97
+ ```ruby
98
+ attributes = {
99
+ kind: "multi",
100
+ organization: {
101
+ name: "the-org-name",
102
+ key, "my-org-key",
103
+ myCustomAttribute, "myAttributeValue"
104
+ },
105
+ user: {
106
+ key: "my-user-key",
107
+ anonymous, true
108
+ }
109
+ }
110
+ context = EvaluationContext(**attributes)
111
+ ```
112
+
113
+ #### Setting private attributes in a single context
114
+
115
+ ```ruby
116
+ attributes = {
117
+ key: "org-key",
118
+ kind: "organization",
119
+ myCustomAttribute: "myAttributeValue",
120
+ privateAttributes: ["myCustomAttribute"]
121
+ }
122
+
123
+ context = EvaluationContext(**attributes)
124
+ ```
125
+
126
+ #### Setting private attributes in a multi-context
127
+
128
+ ```ruby
129
+ attributes = {
130
+ kind: "organization",
131
+ organization: {
132
+ name: "the-org-name",
133
+ key: "my-org-key",
134
+ # This will ONLY apply to the "organization" attributes.
135
+ privateAttributes: ["myCustomAttribute"],
136
+ # This attribute will be private.
137
+ myCustomAttribute: "myAttributeValue",
138
+ },
139
+ user: [
140
+ key: "my-user-key",
141
+ anonymous = > true,
142
+ # This attribute will not be private.
143
+ myCustomAttribute: "myAttributeValue",
144
+ ]
145
+ }
146
+
147
+ context = EvaluationContext(**attributes)
148
+ ```
149
+
150
+ ## Learn more
151
+
152
+ Check out our [documentation](http://docs.launchdarkly.com) for in-depth instructions on configuring and using LaunchDarkly. You can also head straight to the [complete reference guide for this SDK](https://docs.launchdarkly.com/sdk/server-side/ruby).
153
+
154
+ The authoritative description of all properties and methods is in the [ruby documentation](https://launchdarkly.github.io/openfeature-ruby-server/).
155
+
156
+ ## Contributing
157
+
158
+ We encourage pull requests and other contributions from the community. Check out our [contributing guidelines](CONTRIBUTING.md) for instructions on how to contribute to this SDK.
159
+
160
+ ## About LaunchDarkly
161
+
162
+ * LaunchDarkly is a continuous delivery platform that provides feature flags as a service and allows developers to iterate quickly and safely. We allow you to easily flag your features and manage them from the LaunchDarkly dashboard. With LaunchDarkly, you can:
163
+ * Roll out a new feature to a subset of your users (like a group of users who opt-in to a beta tester group), gathering feedback and bug reports from real-world use cases.
164
+ * Gradually roll out a feature to an increasing percentage of users, and track the effect that the feature has on key metrics (for instance, how likely is a user to complete a purchase if they have feature A versus feature B?).
165
+ * Turn off a feature that you realize is causing performance problems in production, without needing to re-deploy, or even restart the application with a changed configuration file.
166
+ * Grant access to certain features based on user attributes, like payment plan (eg: users on the ‘gold’ plan get access to more features than users in the ‘silver’ plan). Disable parts of your application to facilitate maintenance, without taking everything offline.
167
+ * LaunchDarkly provides feature flag SDKs for a wide variety of languages and technologies. Check out [our documentation](https://docs.launchdarkly.com/sdk) for a complete list.
168
+ * Explore LaunchDarkly
169
+ * [launchdarkly.com](https://www.launchdarkly.com/ "LaunchDarkly Main Website") for more information
170
+ * [docs.launchdarkly.com](https://docs.launchdarkly.com/ "LaunchDarkly Documentation") for our documentation and SDK reference guides
171
+ * [apidocs.launchdarkly.com](https://apidocs.launchdarkly.com/ "LaunchDarkly API Documentation") for our API documentation
172
+ * [blog.launchdarkly.com](https://blog.launchdarkly.com/ "LaunchDarkly Blog Documentation") for the latest product updates
173
+
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/ldclient-openfeature/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "launchdarkly-openfeature-server-sdk"
7
+ spec.version = LaunchDarkly::OpenFeature::VERSION
8
+ spec.authors = ["LaunchDarkly"]
9
+ spec.email = ["team@launchdarkly.com"]
10
+
11
+ spec.summary = "LaunchDarkly OpenFeature Server SDK"
12
+ spec.description = "A LaunchDarkly provider for use with the OpenFeature SDK"
13
+ spec.homepage = "https://github.com/launchdarkly/openfeature-ruby-server"
14
+ spec.required_ruby_version = ">= 3.1"
15
+
16
+ spec.metadata["homepage_uri"] = spec.homepage
17
+ spec.metadata["source_code_uri"] = "https://github.com/launchdarkly/openfeature-ruby-server"
18
+ spec.metadata["changelog_uri"] = "https://github.com/launchdarkly/openfeature-ruby-server/blob/main/CHANGELOG.md"
19
+
20
+ # Specify which files should be added to the gem when it is released.
21
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ spec.files = Dir.chdir(__dir__) do
23
+ `git ls-files -z`.split("\x0").reject do |f|
24
+ (File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
25
+ end
26
+ end
27
+ spec.bindir = "exe"
28
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ["lib"]
30
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LaunchDarkly
4
+ module OpenFeature
5
+ VERSION = "0.0.0"
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ldclient-openfeature/version"
4
+
5
+ require "logger"
6
+
7
+ module LaunchDarkly
8
+ #
9
+ # Namespace for the LaunchDarkly OpenFeature provider.
10
+ #
11
+ module OpenFeature
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: launchdarkly-openfeature-server-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - LaunchDarkly
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-07-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A LaunchDarkly provider for use with the OpenFeature SDK
14
+ email:
15
+ - team@launchdarkly.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".release-please-manifest.json"
21
+ - ".rspec"
22
+ - ".rubocop.yml"
23
+ - Gemfile
24
+ - LICENSE.txt
25
+ - README.md
26
+ - Rakefile
27
+ - launchdarkly-openfeature-server-sdk.gemspec
28
+ - lib/ldclient-openfeature.rb
29
+ - lib/ldclient-openfeature/version.rb
30
+ homepage: https://github.com/launchdarkly/openfeature-ruby-server
31
+ licenses: []
32
+ metadata:
33
+ homepage_uri: https://github.com/launchdarkly/openfeature-ruby-server
34
+ source_code_uri: https://github.com/launchdarkly/openfeature-ruby-server
35
+ changelog_uri: https://github.com/launchdarkly/openfeature-ruby-server/blob/main/CHANGELOG.md
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '3.1'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubygems_version: 3.3.26
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: LaunchDarkly OpenFeature Server SDK
55
+ test_files: []