launchdarkly-server-sdk 5.7.2 → 5.7.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/launchdarkly-server-sdk.gemspec +0 -1
- data/lib/ldclient-rb/evaluation.rb +17 -8
- data/lib/ldclient-rb/events.rb +1 -0
- data/lib/ldclient-rb/ldclient.rb +11 -0
- data/lib/ldclient-rb/version.rb +1 -1
- data/spec/evaluation_spec.rb +6 -6
- data/spec/ldclient_spec.rb +40 -0
- metadata +3 -5
- data/ext/mkrf_conf.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab666bc37fa5a2f111f10b81d7cf0938b9f9bfc0
|
4
|
+
data.tar.gz: 1f6564ed51bdfc73c62016c27e64571476165b55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d76941981b9b7144d64a49b735b155dd79f0f37163612d5ad88751b7666f133310ecbbc6caae7598d4d775c9ef2e41f21276c8f36e11e0628f6e97a28df94419
|
7
|
+
data.tar.gz: 7dbbd6e3f3cd865a372ab713f528c380f232c186d3c2b153073cb90256159fbd44dc1dcb7a0fcfea23d4518cb63b1ff72cff8fac8d48f2e4f030da1f65c6d648
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
All notable changes to the LaunchDarkly Ruby SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).
|
4
4
|
|
5
|
+
## [5.7.2] - 2020-03-27
|
6
|
+
### Fixed:
|
7
|
+
- Fixed a bug in the 5.7.0 and 5.7.1 releases that caused analytics events not to be sent unless diagnostic events were explicitly disabled. This also caused an error to be logged: `undefined method started?`.
|
8
|
+
|
5
9
|
## [5.7.1] - 2020-03-18
|
6
10
|
### Fixed:
|
7
11
|
- The backoff delay logic for reconnecting after a stream failure was broken so that if a failure occurred after a stream had been active for at least 60 seconds, retries would use _no_ delay, potentially causing a flood of requests and a spike in CPU usage. This bug was introduced in version 5.5.0 of the SDK.
|
data/Gemfile.lock
CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
21
|
spec.require_paths = ["lib"]
|
22
|
-
spec.extensions = 'ext/mkrf_conf.rb'
|
23
22
|
|
24
23
|
spec.add_development_dependency "aws-sdk-dynamodb", "~> 1.18"
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
@@ -140,35 +140,44 @@ module LaunchDarkly
|
|
140
140
|
end,
|
141
141
|
endsWith:
|
142
142
|
lambda do |a, b|
|
143
|
-
(a.is_a? String) && (a.end_with? b)
|
143
|
+
(a.is_a? String) && (b.is_a? String) && (a.end_with? b)
|
144
144
|
end,
|
145
145
|
startsWith:
|
146
146
|
lambda do |a, b|
|
147
|
-
(a.is_a? String) && (a.start_with? b)
|
147
|
+
(a.is_a? String) && (b.is_a? String) && (a.start_with? b)
|
148
148
|
end,
|
149
149
|
matches:
|
150
150
|
lambda do |a, b|
|
151
|
-
(b.is_a? String) &&
|
151
|
+
if (b.is_a? String) && (b.is_a? String)
|
152
|
+
begin
|
153
|
+
re = Regexp.new b
|
154
|
+
!re.match(a).nil?
|
155
|
+
rescue
|
156
|
+
false
|
157
|
+
end
|
158
|
+
else
|
159
|
+
false
|
160
|
+
end
|
152
161
|
end,
|
153
162
|
contains:
|
154
163
|
lambda do |a, b|
|
155
|
-
(a.is_a? String) && (a.include? b)
|
164
|
+
(a.is_a? String) && (b.is_a? String) && (a.include? b)
|
156
165
|
end,
|
157
166
|
lessThan:
|
158
167
|
lambda do |a, b|
|
159
|
-
(a.is_a? Numeric) && (a < b)
|
168
|
+
(a.is_a? Numeric) && (b.is_a? Numeric) && (a < b)
|
160
169
|
end,
|
161
170
|
lessThanOrEqual:
|
162
171
|
lambda do |a, b|
|
163
|
-
(a.is_a? Numeric) && (a <= b)
|
172
|
+
(a.is_a? Numeric) && (b.is_a? Numeric) && (a <= b)
|
164
173
|
end,
|
165
174
|
greaterThan:
|
166
175
|
lambda do |a, b|
|
167
|
-
(a.is_a? Numeric) && (a > b)
|
176
|
+
(a.is_a? Numeric) && (b.is_a? Numeric) && (a > b)
|
168
177
|
end,
|
169
178
|
greaterThanOrEqual:
|
170
179
|
lambda do |a, b|
|
171
|
-
(a.is_a? Numeric) && (a >= b)
|
180
|
+
(a.is_a? Numeric) && (b.is_a? Numeric) && (a >= b)
|
172
181
|
end,
|
173
182
|
before:
|
174
183
|
comparator(DATE_OPERAND) { |n| n < 0 },
|
data/lib/ldclient-rb/events.rb
CHANGED
@@ -91,6 +91,7 @@ module LaunchDarkly
|
|
91
91
|
# @private
|
92
92
|
class EventProcessor
|
93
93
|
def initialize(sdk_key, config, client = nil, diagnostic_accumulator = nil, test_properties = nil)
|
94
|
+
raise ArgumentError, "sdk_key must not be nil" if sdk_key.nil? # see LDClient constructor comment on sdk_key
|
94
95
|
@logger = config.logger
|
95
96
|
@inbox = SizedQueue.new(config.capacity < 100 ? 100 : config.capacity)
|
96
97
|
@flush_task = Concurrent::TimerTask.new(execution_interval: config.flush_interval) do
|
data/lib/ldclient-rb/ldclient.rb
CHANGED
@@ -33,6 +33,16 @@ module LaunchDarkly
|
|
33
33
|
# @return [LDClient] The LaunchDarkly client instance
|
34
34
|
#
|
35
35
|
def initialize(sdk_key, config = Config.default, wait_for_sec = 5)
|
36
|
+
# Note that sdk_key is normally a required parameter, and a nil value would cause the SDK to
|
37
|
+
# fail in most configurations. However, there are some configurations where it would be OK
|
38
|
+
# (offline = true, *or* we are using LDD mode or the file data source and events are disabled
|
39
|
+
# so we're not connecting to any LD services) so rather than try to check for all of those
|
40
|
+
# up front, we will let the constructors for the data source implementations implement this
|
41
|
+
# fail-fast as appropriate, and just check here for the part regarding events.
|
42
|
+
if !config.offline? && config.send_events
|
43
|
+
raise ArgumentError, "sdk_key must not be nil" if sdk_key.nil?
|
44
|
+
end
|
45
|
+
|
36
46
|
@sdk_key = sdk_key
|
37
47
|
|
38
48
|
@event_factory_default = EventFactory.new(false)
|
@@ -352,6 +362,7 @@ module LaunchDarkly
|
|
352
362
|
if config.offline?
|
353
363
|
return NullUpdateProcessor.new
|
354
364
|
end
|
365
|
+
raise ArgumentError, "sdk_key must not be nil" if sdk_key.nil? # see LDClient constructor comment on sdk_key
|
355
366
|
requestor = Requestor.new(sdk_key, config)
|
356
367
|
if config.stream?
|
357
368
|
StreamProcessor.new(sdk_key, config, requestor, diagnostic_accumulator)
|
data/lib/ldclient-rb/version.rb
CHANGED
data/spec/evaluation_spec.rb
CHANGED
@@ -495,13 +495,13 @@ describe LaunchDarkly::Evaluation do
|
|
495
495
|
# mixed strings and numbers
|
496
496
|
[ :in, "99", 99, false ],
|
497
497
|
[ :in, 99, "99", false ],
|
498
|
-
|
499
|
-
|
500
|
-
|
498
|
+
[ :contains, "99", 99, false ],
|
499
|
+
[ :startsWith, "99", 99, false ],
|
500
|
+
[ :endsWith, "99", 99, false ],
|
501
501
|
[ :lessThanOrEqual, "99", 99, false ],
|
502
|
-
|
502
|
+
[ :lessThanOrEqual, 99, "99", false ],
|
503
503
|
[ :greaterThanOrEqual, "99", 99, false ],
|
504
|
-
|
504
|
+
[ :greaterThanOrEqual, 99, "99", false ],
|
505
505
|
|
506
506
|
# regex
|
507
507
|
[ :matches, "hello world", "hello.*rld", true ],
|
@@ -509,7 +509,7 @@ describe LaunchDarkly::Evaluation do
|
|
509
509
|
[ :matches, "hello world", "l+", true ],
|
510
510
|
[ :matches, "hello world", "(world|planet)", true ],
|
511
511
|
[ :matches, "hello world", "aloha", false ],
|
512
|
-
|
512
|
+
[ :matches, "hello world", "***not a regex", false ],
|
513
513
|
|
514
514
|
# dates
|
515
515
|
[ :before, dateStr1, dateStr2, true ],
|
data/spec/ldclient_spec.rb
CHANGED
@@ -49,6 +49,46 @@ describe LaunchDarkly::LDClient do
|
|
49
49
|
client.instance_variable_get(:@event_processor)
|
50
50
|
end
|
51
51
|
|
52
|
+
describe "constructor requirement of non-nil sdk key" do
|
53
|
+
it "is not enforced when offline" do
|
54
|
+
subject.new(nil, offline_config)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "is not enforced if use_ldd is true and send_events is false" do
|
58
|
+
subject.new(nil, LaunchDarkly::Config.new({ use_ldd: true, send_events: false }))
|
59
|
+
end
|
60
|
+
|
61
|
+
it "is not enforced if using file data and send_events is false" do
|
62
|
+
source = LaunchDarkly::FileDataSource.factory({})
|
63
|
+
subject.new(nil, LaunchDarkly::Config.new({ data_source: source, send_events: false }))
|
64
|
+
end
|
65
|
+
|
66
|
+
it "is enforced in streaming mode even if send_events is false" do
|
67
|
+
expect {
|
68
|
+
subject.new(nil, LaunchDarkly::Config.new({ send_events: false }))
|
69
|
+
}.to raise_error(ArgumentError)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "is enforced in polling mode even if send_events is false" do
|
73
|
+
expect {
|
74
|
+
subject.new(nil, LaunchDarkly::Config.new({ stream: false, send_events: false }))
|
75
|
+
}.to raise_error(ArgumentError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "is enforced if use_ldd is true and send_events is true" do
|
79
|
+
expect {
|
80
|
+
subject.new(nil, LaunchDarkly::Config.new({ use_ldd: true }))
|
81
|
+
}.to raise_error(ArgumentError)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "is enforced if using file data and send_events is true" do
|
85
|
+
source = LaunchDarkly::FileDataSource.factory({})
|
86
|
+
expect {
|
87
|
+
subject.new(nil, LaunchDarkly::Config.new({ data_source: source }))
|
88
|
+
}.to raise_error(ArgumentError)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
52
92
|
describe '#variation' do
|
53
93
|
feature_with_value = { key: "key", on: false, offVariation: 0, variations: ["value"], version: 100,
|
54
94
|
trackEvents: true, debugEventsUntilDate: 1000 }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: launchdarkly-server-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.7.
|
4
|
+
version: 5.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LaunchDarkly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|
@@ -216,8 +216,7 @@ description: Official LaunchDarkly SDK for Ruby
|
|
216
216
|
email:
|
217
217
|
- team@launchdarkly.com
|
218
218
|
executables: []
|
219
|
-
extensions:
|
220
|
-
- ext/mkrf_conf.rb
|
219
|
+
extensions: []
|
221
220
|
extra_rdoc_files: []
|
222
221
|
files:
|
223
222
|
- ".circleci/config.yml"
|
@@ -239,7 +238,6 @@ files:
|
|
239
238
|
- LICENSE.txt
|
240
239
|
- README.md
|
241
240
|
- azure-pipelines.yml
|
242
|
-
- ext/mkrf_conf.rb
|
243
241
|
- launchdarkly-server-sdk.gemspec
|
244
242
|
- lib/launchdarkly-server-sdk.rb
|
245
243
|
- lib/ldclient-rb.rb
|
data/ext/mkrf_conf.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
|
3
|
-
|
4
|
-
# From http://stackoverflow.com/questions/5830835/how-to-add-openssl-dependency-to-gemspec
|
5
|
-
# the whole reason this file exists: to return an error if openssl
|
6
|
-
# isn't installed.
|
7
|
-
require "openssl"
|
8
|
-
|
9
|
-
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
|
10
|
-
f.write("task :default\n")
|
11
|
-
f.close
|