splitclient-rb 4.5.1-java

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 (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +45 -0
  3. data/CHANGES.txt +147 -0
  4. data/Detailed-README.md +571 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +13 -0
  7. data/NEWS +75 -0
  8. data/README.md +43 -0
  9. data/Rakefile +24 -0
  10. data/exe/splitio +96 -0
  11. data/ext/murmurhash/MurmurHash3.java +162 -0
  12. data/lib/murmurhash/base.rb +58 -0
  13. data/lib/murmurhash/murmurhash.jar +0 -0
  14. data/lib/murmurhash/murmurhash_mri.rb +3 -0
  15. data/lib/splitclient-rb.rb +90 -0
  16. data/lib/splitclient-rb/cache/adapters/memory_adapter.rb +12 -0
  17. data/lib/splitclient-rb/cache/adapters/memory_adapters/map_adapter.rb +133 -0
  18. data/lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb +44 -0
  19. data/lib/splitclient-rb/cache/adapters/redis_adapter.rb +165 -0
  20. data/lib/splitclient-rb/cache/repositories/events/memory_repository.rb +30 -0
  21. data/lib/splitclient-rb/cache/repositories/events/redis_repository.rb +29 -0
  22. data/lib/splitclient-rb/cache/repositories/events_repository.rb +41 -0
  23. data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +49 -0
  24. data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +78 -0
  25. data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +21 -0
  26. data/lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb +129 -0
  27. data/lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb +98 -0
  28. data/lib/splitclient-rb/cache/repositories/metrics_repository.rb +22 -0
  29. data/lib/splitclient-rb/cache/repositories/repository.rb +23 -0
  30. data/lib/splitclient-rb/cache/repositories/segments_repository.rb +82 -0
  31. data/lib/splitclient-rb/cache/repositories/splits_repository.rb +106 -0
  32. data/lib/splitclient-rb/cache/routers/impression_router.rb +52 -0
  33. data/lib/splitclient-rb/cache/senders/events_sender.rb +47 -0
  34. data/lib/splitclient-rb/cache/senders/impressions_formatter.rb +73 -0
  35. data/lib/splitclient-rb/cache/senders/impressions_sender.rb +67 -0
  36. data/lib/splitclient-rb/cache/senders/metrics_sender.rb +49 -0
  37. data/lib/splitclient-rb/cache/stores/sdk_blocker.rb +48 -0
  38. data/lib/splitclient-rb/cache/stores/segment_store.rb +82 -0
  39. data/lib/splitclient-rb/cache/stores/split_store.rb +97 -0
  40. data/lib/splitclient-rb/clients/localhost_split_client.rb +92 -0
  41. data/lib/splitclient-rb/clients/split_client.rb +214 -0
  42. data/lib/splitclient-rb/engine/api/client.rb +74 -0
  43. data/lib/splitclient-rb/engine/api/events.rb +48 -0
  44. data/lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb +55 -0
  45. data/lib/splitclient-rb/engine/api/impressions.rb +42 -0
  46. data/lib/splitclient-rb/engine/api/metrics.rb +61 -0
  47. data/lib/splitclient-rb/engine/api/segments.rb +62 -0
  48. data/lib/splitclient-rb/engine/api/splits.rb +60 -0
  49. data/lib/splitclient-rb/engine/evaluator/splitter.rb +123 -0
  50. data/lib/splitclient-rb/engine/matchers/all_keys_matcher.rb +46 -0
  51. data/lib/splitclient-rb/engine/matchers/between_matcher.rb +56 -0
  52. data/lib/splitclient-rb/engine/matchers/combiners.rb +9 -0
  53. data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +86 -0
  54. data/lib/splitclient-rb/engine/matchers/contains_all_matcher.rb +21 -0
  55. data/lib/splitclient-rb/engine/matchers/contains_any_matcher.rb +19 -0
  56. data/lib/splitclient-rb/engine/matchers/contains_matcher.rb +30 -0
  57. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +20 -0
  58. data/lib/splitclient-rb/engine/matchers/ends_with_matcher.rb +26 -0
  59. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +27 -0
  60. data/lib/splitclient-rb/engine/matchers/equal_to_matcher.rb +54 -0
  61. data/lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb +19 -0
  62. data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb +53 -0
  63. data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb +53 -0
  64. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +24 -0
  65. data/lib/splitclient-rb/engine/matchers/negation_matcher.rb +60 -0
  66. data/lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb +23 -0
  67. data/lib/splitclient-rb/engine/matchers/set_matcher.rb +20 -0
  68. data/lib/splitclient-rb/engine/matchers/starts_with_matcher.rb +26 -0
  69. data/lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb +45 -0
  70. data/lib/splitclient-rb/engine/matchers/whitelist_matcher.rb +66 -0
  71. data/lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb +128 -0
  72. data/lib/splitclient-rb/engine/metrics/metrics.rb +83 -0
  73. data/lib/splitclient-rb/engine/models/label.rb +8 -0
  74. data/lib/splitclient-rb/engine/models/split.rb +17 -0
  75. data/lib/splitclient-rb/engine/models/treatment.rb +3 -0
  76. data/lib/splitclient-rb/engine/parser/condition.rb +210 -0
  77. data/lib/splitclient-rb/engine/parser/evaluator.rb +118 -0
  78. data/lib/splitclient-rb/engine/parser/partition.rb +35 -0
  79. data/lib/splitclient-rb/engine/parser/split_adapter.rb +88 -0
  80. data/lib/splitclient-rb/exceptions/impressions_shutdown_exception.rb +4 -0
  81. data/lib/splitclient-rb/exceptions/sdk_blocker_timeout_expired_exception.rb +4 -0
  82. data/lib/splitclient-rb/localhost_split_factory.rb +13 -0
  83. data/lib/splitclient-rb/localhost_utils.rb +36 -0
  84. data/lib/splitclient-rb/managers/localhost_split_manager.rb +45 -0
  85. data/lib/splitclient-rb/managers/split_manager.rb +77 -0
  86. data/lib/splitclient-rb/split_config.rb +391 -0
  87. data/lib/splitclient-rb/split_factory.rb +35 -0
  88. data/lib/splitclient-rb/split_factory_builder.rb +16 -0
  89. data/lib/splitclient-rb/utilitites.rb +41 -0
  90. data/lib/splitclient-rb/version.rb +3 -0
  91. data/splitclient-rb.gemspec +50 -0
  92. data/splitio.yml.example +7 -0
  93. data/tasks/benchmark_get_treatment.rake +43 -0
  94. data/tasks/irb.rake +4 -0
  95. data/tasks/rspec.rake +3 -0
  96. metadata +321 -0
@@ -0,0 +1,35 @@
1
+ module SplitIoClient
2
+ class SplitFactory
3
+ include SplitIoClient::Cache::Repositories
4
+ include SplitIoClient::Cache::Stores
5
+
6
+ attr_reader :adapter, :client, :manager
7
+
8
+ def initialize(api_key, config_hash = {})
9
+ @api_key = api_key
10
+ @config = SplitConfig.new(config_hash)
11
+
12
+ @cache_adapter = @config.cache_adapter
13
+
14
+ @splits_repository = SplitsRepository.new(@cache_adapter, @config)
15
+ @segments_repository = SegmentsRepository.new(@cache_adapter, @config)
16
+ @impressions_repository = ImpressionsRepository.new(@config.impressions_adapter, @config)
17
+ @metrics_repository = MetricsRepository.new(@config.metrics_adapter, @config)
18
+ @events_repository = EventsRepository.new(@config.events_adapter, @config)
19
+
20
+ @sdk_blocker = SDKBlocker.new(@config, @splits_repository, @segments_repository)
21
+ @adapter = start!
22
+
23
+ @client = SplitClient.new(@api_key, @config, @adapter, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository)
24
+ @manager = SplitManager.new(@api_key, @config, @adapter, @splits_repository)
25
+
26
+ @sdk_blocker.block if @config.block_until_ready > 0
27
+ end
28
+
29
+ def start!
30
+ SplitAdapter.new(@api_key, @config, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository, @sdk_blocker)
31
+ end
32
+
33
+ alias resume! start!
34
+ end
35
+ end
@@ -0,0 +1,16 @@
1
+ require 'logger'
2
+
3
+ module SplitIoClient
4
+ class SplitFactoryBuilder
5
+ def self.build(api_key, config = {})
6
+ case api_key
7
+ when 'localhost'
8
+ splits_file = config[:path]? config[:path] : File.join(Dir.home, '.split')
9
+
10
+ LocalhostSplitFactory.new(splits_file, config[:reload_rate])
11
+ else
12
+ SplitFactory.new(api_key, config)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,41 @@
1
+ module SplitIoClient
2
+ module Utilities
3
+ extend self
4
+
5
+ # Convert String with Time info to its epoch FixNum previously setting to zero the seconds
6
+ def to_epoch(value)
7
+ parsed = Time.parse(value)
8
+ zeroed = Time.new(parsed.year, parsed.month, parsed.day, parsed.hour, parsed.min, 0, 0)
9
+
10
+ zeroed.to_i
11
+ end
12
+
13
+ def to_epoch_milis(value)
14
+ to_epoch(value) * 1000
15
+ end
16
+
17
+ def to_milis_zero_out_from_seconds(value)
18
+ parsed_value = Time.strptime(value.to_s, '%s').utc
19
+ zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, parsed_value.hour, parsed_value.min, 0, 0)
20
+
21
+ zeroed.to_i * 1000
22
+ rescue StandardError
23
+ return :non_valid_date_info
24
+ end
25
+
26
+ def to_milis_zero_out_from_hour(value)
27
+ parsed_value = Time.strptime(value.to_s, '%s').utc
28
+ zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, 0, 0, 0, 0)
29
+
30
+ zeroed.to_i * 1000
31
+ rescue StandardError
32
+ return :non_valid_date_info
33
+ end
34
+
35
+ def randomize_interval(interval)
36
+ random_factor = Random.new.rand(50..100) / 100.0
37
+
38
+ interval * random_factor
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module SplitIoClient
2
+ VERSION = '4.5.1'
3
+ end
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'splitclient-rb/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "splitclient-rb"
8
+ spec.version = SplitIoClient::VERSION
9
+ spec.authors = ["Split Software"]
10
+ spec.email = ["pato@split.io"]
11
+
12
+ spec.summary = %q{Ruby client for split SDK.}
13
+ spec.description = %q{Ruby client for using split SDK.}
14
+ spec.homepage = "https://github.com/splitio/ruby-client"
15
+ spec.license = "Apache 2.0"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|features|ext)/}) }
18
+
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ if defined?(JRUBY_VERSION)
24
+ spec.platform = 'java'
25
+ spec.files << 'ext/murmurhash/MurmurHash3.java'
26
+ else
27
+ spec.files.concat(%w(
28
+ ext/murmurhash/3_x86_32.c
29
+ ext/murmurhash/extconf.rb
30
+ ext/murmurhash/murmurhash.c
31
+ ext/murmurhash/murmurhash.h)
32
+ )
33
+ spec.extensions = ["ext/murmurhash/extconf.rb"]
34
+ end
35
+
36
+ spec.add_development_dependency "bundler", "~> 1.11"
37
+ spec.add_development_dependency "rake", "~> 10.0"
38
+ spec.add_development_dependency "rake-compiler"
39
+ spec.add_development_dependency "rspec"
40
+ spec.add_development_dependency "webmock"
41
+ spec.add_development_dependency "simplecov"
42
+ spec.add_development_dependency "allocation_stats"
43
+
44
+ spec.add_runtime_dependency "json", ">= 1.8"
45
+ spec.add_runtime_dependency "thread_safe", ">= 0.3"
46
+ spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
47
+ spec.add_runtime_dependency "faraday", ">= 0.8"
48
+ spec.add_runtime_dependency "net-http-persistent", "~> 2.9"
49
+ spec.add_runtime_dependency "redis", ">= 3.2"
50
+ end
@@ -0,0 +1,7 @@
1
+ ---
2
+ :api_key: api_key
3
+ :mode: :producer
4
+ :cache_adapter: :redis
5
+ :debug_enabled: true
6
+ :transport_debug_enabled: true
7
+ :impressions_refresh_rate: 30
@@ -0,0 +1,43 @@
1
+ desc "Benchmark the get_treatment method call in 4 threads"
2
+
3
+ # Usage:
4
+ # rake concurrent_benchmark api_key=YOUR_API_KEY base_uri=YOUR_API_BASE_URI [iterations=NUMBER_OF_ITERATIONS] [user_id=A_USER_ID] [feature_id=A_FEATURE_ID]
5
+ task :concurrent_benchmark do
6
+ require 'benchmark'
7
+ require 'splitclient-rb'
8
+
9
+ usage_message = "Usage: rake concurrent_benchmark api_key=YOUR_API_KEY base_uri=YOUR_API_BASE_URI [iterations=NUMBER_OF_ITERATIONS] [user_id=A_USER_ID] [feature_id=A_FEATURE_ID]"
10
+ valid_params = validate_params
11
+ if validate_params
12
+ execute
13
+ else
14
+ p usage_message
15
+ end
16
+ end
17
+
18
+ def validate_params
19
+ !ENV['api_key'].nil? && !ENV['base_uri'].nil?
20
+ end
21
+
22
+ def execute
23
+ api_key = ENV['api_key'].nil? ? "fake_api_key" : ENV['api_key']
24
+ base_uri = ENV['base_uri'].nil? ? "fake/api/" : ENV['base_uri']
25
+ iterations = ENV['iterations'].nil? ? 1000000 : ENV['iterations'].to_i
26
+ user_id = ENV['user_id'].nil? ? "fake_id_1" : ENV['user_id']
27
+ feature_id = ENV['feature_id'].nil? ? "sample_feature" : ENV['feature_id']
28
+
29
+ threads = []
30
+ times_per_thread = iterations / 4
31
+ split_client = SplitIoClient::SplitFactory.new(api_key, {base_uri: base_uri, logger: Logger.new("/dev/null").client })
32
+
33
+ puts Benchmark.measure{
34
+ 4.times do |i|
35
+ threads << Thread.new do
36
+ times_per_thread.times do
37
+ split_client.get_treatment user_id, feature_id, {attr: 123}
38
+ end
39
+ end
40
+ end
41
+ threads.map(&:join)
42
+ }
43
+ end
@@ -0,0 +1,4 @@
1
+ desc "Open an irb session preloaded with this library"
2
+ task :irb do
3
+ sh "irb -rubygems -I lib -r splitclient-rb.rb"
4
+ end
@@ -0,0 +1,3 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
metadata ADDED
@@ -0,0 +1,321 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: splitclient-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 4.5.1
5
+ platform: java
6
+ authors:
7
+ - Split Software
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.11'
19
+ name: bundler
20
+ prerelease: false
21
+ type: :development
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '10.0'
33
+ name: rake
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ name: rake-compiler
48
+ prerelease: false
49
+ type: :development
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ name: rspec
62
+ prerelease: false
63
+ type: :development
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ name: webmock
76
+ prerelease: false
77
+ type: :development
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ name: simplecov
90
+ prerelease: false
91
+ type: :development
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ name: allocation_stats
104
+ prerelease: false
105
+ type: :development
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '1.8'
117
+ name: json
118
+ prerelease: false
119
+ type: :runtime
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '1.8'
125
+ - !ruby/object:Gem::Dependency
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0.3'
131
+ name: thread_safe
132
+ prerelease: false
133
+ type: :runtime
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0.3'
139
+ - !ruby/object:Gem::Dependency
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.0'
145
+ name: concurrent-ruby
146
+ prerelease: false
147
+ type: :runtime
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0.8'
159
+ name: faraday
160
+ prerelease: false
161
+ type: :runtime
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0.8'
167
+ - !ruby/object:Gem::Dependency
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.9'
173
+ name: net-http-persistent
174
+ prerelease: false
175
+ type: :runtime
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.9'
181
+ - !ruby/object:Gem::Dependency
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '3.2'
187
+ name: redis
188
+ prerelease: false
189
+ type: :runtime
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '3.2'
195
+ description: Ruby client for using split SDK.
196
+ email:
197
+ - pato@split.io
198
+ executables:
199
+ - splitio
200
+ extensions: []
201
+ extra_rdoc_files: []
202
+ files:
203
+ - ".gitignore"
204
+ - CHANGES.txt
205
+ - Detailed-README.md
206
+ - Gemfile
207
+ - LICENSE
208
+ - NEWS
209
+ - README.md
210
+ - Rakefile
211
+ - exe/splitio
212
+ - ext/murmurhash/MurmurHash3.java
213
+ - lib/murmurhash/base.rb
214
+ - lib/murmurhash/murmurhash.jar
215
+ - lib/murmurhash/murmurhash_mri.rb
216
+ - lib/splitclient-rb.rb
217
+ - lib/splitclient-rb/cache/adapters/memory_adapter.rb
218
+ - lib/splitclient-rb/cache/adapters/memory_adapters/map_adapter.rb
219
+ - lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
220
+ - lib/splitclient-rb/cache/adapters/redis_adapter.rb
221
+ - lib/splitclient-rb/cache/repositories/events/memory_repository.rb
222
+ - lib/splitclient-rb/cache/repositories/events/redis_repository.rb
223
+ - lib/splitclient-rb/cache/repositories/events_repository.rb
224
+ - lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb
225
+ - lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb
226
+ - lib/splitclient-rb/cache/repositories/impressions_repository.rb
227
+ - lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb
228
+ - lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb
229
+ - lib/splitclient-rb/cache/repositories/metrics_repository.rb
230
+ - lib/splitclient-rb/cache/repositories/repository.rb
231
+ - lib/splitclient-rb/cache/repositories/segments_repository.rb
232
+ - lib/splitclient-rb/cache/repositories/splits_repository.rb
233
+ - lib/splitclient-rb/cache/routers/impression_router.rb
234
+ - lib/splitclient-rb/cache/senders/events_sender.rb
235
+ - lib/splitclient-rb/cache/senders/impressions_formatter.rb
236
+ - lib/splitclient-rb/cache/senders/impressions_sender.rb
237
+ - lib/splitclient-rb/cache/senders/metrics_sender.rb
238
+ - lib/splitclient-rb/cache/stores/sdk_blocker.rb
239
+ - lib/splitclient-rb/cache/stores/segment_store.rb
240
+ - lib/splitclient-rb/cache/stores/split_store.rb
241
+ - lib/splitclient-rb/clients/localhost_split_client.rb
242
+ - lib/splitclient-rb/clients/split_client.rb
243
+ - lib/splitclient-rb/engine/api/client.rb
244
+ - lib/splitclient-rb/engine/api/events.rb
245
+ - lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb
246
+ - lib/splitclient-rb/engine/api/impressions.rb
247
+ - lib/splitclient-rb/engine/api/metrics.rb
248
+ - lib/splitclient-rb/engine/api/segments.rb
249
+ - lib/splitclient-rb/engine/api/splits.rb
250
+ - lib/splitclient-rb/engine/evaluator/splitter.rb
251
+ - lib/splitclient-rb/engine/matchers/all_keys_matcher.rb
252
+ - lib/splitclient-rb/engine/matchers/between_matcher.rb
253
+ - lib/splitclient-rb/engine/matchers/combiners.rb
254
+ - lib/splitclient-rb/engine/matchers/combining_matcher.rb
255
+ - lib/splitclient-rb/engine/matchers/contains_all_matcher.rb
256
+ - lib/splitclient-rb/engine/matchers/contains_any_matcher.rb
257
+ - lib/splitclient-rb/engine/matchers/contains_matcher.rb
258
+ - lib/splitclient-rb/engine/matchers/dependency_matcher.rb
259
+ - lib/splitclient-rb/engine/matchers/ends_with_matcher.rb
260
+ - lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb
261
+ - lib/splitclient-rb/engine/matchers/equal_to_matcher.rb
262
+ - lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb
263
+ - lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb
264
+ - lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb
265
+ - lib/splitclient-rb/engine/matchers/matches_string_matcher.rb
266
+ - lib/splitclient-rb/engine/matchers/negation_matcher.rb
267
+ - lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb
268
+ - lib/splitclient-rb/engine/matchers/set_matcher.rb
269
+ - lib/splitclient-rb/engine/matchers/starts_with_matcher.rb
270
+ - lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb
271
+ - lib/splitclient-rb/engine/matchers/whitelist_matcher.rb
272
+ - lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb
273
+ - lib/splitclient-rb/engine/metrics/metrics.rb
274
+ - lib/splitclient-rb/engine/models/label.rb
275
+ - lib/splitclient-rb/engine/models/split.rb
276
+ - lib/splitclient-rb/engine/models/treatment.rb
277
+ - lib/splitclient-rb/engine/parser/condition.rb
278
+ - lib/splitclient-rb/engine/parser/evaluator.rb
279
+ - lib/splitclient-rb/engine/parser/partition.rb
280
+ - lib/splitclient-rb/engine/parser/split_adapter.rb
281
+ - lib/splitclient-rb/exceptions/impressions_shutdown_exception.rb
282
+ - lib/splitclient-rb/exceptions/sdk_blocker_timeout_expired_exception.rb
283
+ - lib/splitclient-rb/localhost_split_factory.rb
284
+ - lib/splitclient-rb/localhost_utils.rb
285
+ - lib/splitclient-rb/managers/localhost_split_manager.rb
286
+ - lib/splitclient-rb/managers/split_manager.rb
287
+ - lib/splitclient-rb/split_config.rb
288
+ - lib/splitclient-rb/split_factory.rb
289
+ - lib/splitclient-rb/split_factory_builder.rb
290
+ - lib/splitclient-rb/utilitites.rb
291
+ - lib/splitclient-rb/version.rb
292
+ - splitclient-rb.gemspec
293
+ - splitio.yml.example
294
+ - tasks/benchmark_get_treatment.rake
295
+ - tasks/irb.rake
296
+ - tasks/rspec.rake
297
+ homepage: https://github.com/splitio/ruby-client
298
+ licenses:
299
+ - Apache 2.0
300
+ metadata: {}
301
+ post_install_message:
302
+ rdoc_options: []
303
+ require_paths:
304
+ - lib
305
+ required_ruby_version: !ruby/object:Gem::Requirement
306
+ requirements:
307
+ - - ">="
308
+ - !ruby/object:Gem::Version
309
+ version: '0'
310
+ required_rubygems_version: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ requirements: []
316
+ rubyforge_project:
317
+ rubygems_version: 2.6.14
318
+ signing_key:
319
+ specification_version: 4
320
+ summary: Ruby client for split SDK.
321
+ test_files: []