launchdarkly-server-sdk 5.7.2 → 5.7.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|