splitclient-rb 8.5.0 → 8.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/gem-push.yml +40 -0
  3. data/CHANGES.txt +4 -0
  4. data/lib/splitclient-rb/cache/fetchers/split_fetcher.rb +9 -7
  5. data/lib/splitclient-rb/cache/repositories/rule_based_segments_repository.rb +122 -0
  6. data/lib/splitclient-rb/cache/repositories/segments_repository.rb +7 -0
  7. data/lib/splitclient-rb/cache/repositories/splits_repository.rb +19 -11
  8. data/lib/splitclient-rb/cache/stores/localhost_split_builder.rb +2 -1
  9. data/lib/splitclient-rb/clients/split_client.rb +2 -0
  10. data/lib/splitclient-rb/engine/api/client.rb +8 -0
  11. data/lib/splitclient-rb/engine/api/splits.rb +99 -23
  12. data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +3 -1
  13. data/lib/splitclient-rb/engine/matchers/prerequisites_matcher.rb +31 -0
  14. data/lib/splitclient-rb/engine/matchers/rule_based_segment_matcher.rb +75 -0
  15. data/lib/splitclient-rb/engine/models/label.rb +1 -0
  16. data/lib/splitclient-rb/engine/models/segment_type.rb +4 -0
  17. data/lib/splitclient-rb/engine/models/split_http_response.rb +19 -0
  18. data/lib/splitclient-rb/engine/parser/condition.rb +9 -0
  19. data/lib/splitclient-rb/engine/parser/evaluator.rb +24 -30
  20. data/lib/splitclient-rb/engine/synchronizer.rb +33 -13
  21. data/lib/splitclient-rb/helpers/evaluator_helper.rb +37 -0
  22. data/lib/splitclient-rb/helpers/repository_helper.rb +38 -7
  23. data/lib/splitclient-rb/helpers/util.rb +12 -3
  24. data/lib/splitclient-rb/spec.rb +1 -1
  25. data/lib/splitclient-rb/split_config.rb +4 -0
  26. data/lib/splitclient-rb/split_factory.rb +5 -3
  27. data/lib/splitclient-rb/sse/event_source/event_types.rb +1 -0
  28. data/lib/splitclient-rb/sse/notification_processor.rb +3 -1
  29. data/lib/splitclient-rb/sse/workers/splits_worker.rb +58 -19
  30. data/lib/splitclient-rb/version.rb +1 -1
  31. data/lib/splitclient-rb.rb +6 -0
  32. data/splitclient-rb.gemspec +2 -2
  33. metadata +15 -7
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.5.0
4
+ version: 8.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-17 00:00:00.000000000 Z
11
+ date: 2025-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: allocation_stats
@@ -184,28 +184,28 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '3.14'
187
+ version: '3.24'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '3.14'
194
+ version: '3.24'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: webrick
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '1.7'
201
+ version: 1.8.2
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '1.7'
208
+ version: 1.8.2
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: bitarray
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -413,6 +413,7 @@ files:
413
413
  - ".github/CODEOWNERS"
414
414
  - ".github/pull_request_template.md"
415
415
  - ".github/workflows/ci.yml"
416
+ - ".github/workflows/gem-push.yml"
416
417
  - ".github/workflows/update-license-year.yml"
417
418
  - ".gitignore"
418
419
  - ".rubocop.yml"
@@ -456,6 +457,7 @@ files:
456
457
  - lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb
457
458
  - lib/splitclient-rb/cache/repositories/impressions_repository.rb
458
459
  - lib/splitclient-rb/cache/repositories/repository.rb
460
+ - lib/splitclient-rb/cache/repositories/rule_based_segments_repository.rb
459
461
  - lib/splitclient-rb/cache/repositories/segments_repository.rb
460
462
  - lib/splitclient-rb/cache/repositories/splits_repository.rb
461
463
  - lib/splitclient-rb/cache/routers/impression_router.rb
@@ -510,6 +512,8 @@ files:
510
512
  - lib/splitclient-rb/engine/matchers/matches_string_matcher.rb
511
513
  - lib/splitclient-rb/engine/matchers/negation_matcher.rb
512
514
  - lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb
515
+ - lib/splitclient-rb/engine/matchers/prerequisites_matcher.rb
516
+ - lib/splitclient-rb/engine/matchers/rule_based_segment_matcher.rb
513
517
  - lib/splitclient-rb/engine/matchers/semver.rb
514
518
  - lib/splitclient-rb/engine/matchers/set_matcher.rb
515
519
  - lib/splitclient-rb/engine/matchers/starts_with_matcher.rb
@@ -517,7 +521,9 @@ files:
517
521
  - lib/splitclient-rb/engine/matchers/whitelist_matcher.rb
518
522
  - lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb
519
523
  - lib/splitclient-rb/engine/models/label.rb
524
+ - lib/splitclient-rb/engine/models/segment_type.rb
520
525
  - lib/splitclient-rb/engine/models/split.rb
526
+ - lib/splitclient-rb/engine/models/split_http_response.rb
521
527
  - lib/splitclient-rb/engine/models/treatment.rb
522
528
  - lib/splitclient-rb/engine/parser/condition.rb
523
529
  - lib/splitclient-rb/engine/parser/evaluator.rb
@@ -528,6 +534,7 @@ files:
528
534
  - lib/splitclient-rb/engine/synchronizer.rb
529
535
  - lib/splitclient-rb/exceptions.rb
530
536
  - lib/splitclient-rb/helpers/decryption_helper.rb
537
+ - lib/splitclient-rb/helpers/evaluator_helper.rb
531
538
  - lib/splitclient-rb/helpers/repository_helper.rb
532
539
  - lib/splitclient-rb/helpers/thread_helper.rb
533
540
  - lib/splitclient-rb/helpers/util.rb
@@ -594,7 +601,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
594
601
  - !ruby/object:Gem::Version
595
602
  version: '0'
596
603
  requirements: []
597
- rubygems_version: 3.0.9
604
+ rubyforge_project:
605
+ rubygems_version: 2.7.6.2
598
606
  signing_key:
599
607
  specification_version: 4
600
608
  summary: Ruby client for split SDK.