configcat 6.0.0 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/configcat/configcatclient.rb +39 -28
- data/lib/configcat/configcatlogger.rb +7 -7
- data/lib/configcat/configfetcher.rb +11 -10
- data/lib/configcat/configservice.rb +17 -10
- data/lib/configcat/localfiledatasource.rb +3 -3
- data/lib/configcat/rolloutevaluator.rb +16 -11
- data/lib/configcat/version.rb +1 -1
- data/lib/configcat.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6979b91044d036414367912894396e332a9fdd10b4239e72294a74949d8e5c82
|
4
|
+
data.tar.gz: fd58f1ea297a2fce1cf47e4bfe521724677617a32163d7b5bde3f2f80234482e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae734ae5e04ae73c6ea7eb62c48a5633a943ac009c2f7b59729028a141932cdfdfceabbdef207d774153f586c0c418df939c0042ea288debe6bfccf877765ff7
|
7
|
+
data.tar.gz: 50b222dd87b113807f72ab24f3e0dfd01bb752639ab394094e40c34461e57ca0637d59038883b78d02dcdcfcd0469bfc21c6b6a5f74ab0b4658c17fcd8d7e8bc
|
@@ -28,8 +28,9 @@ module ConfigCat
|
|
28
28
|
client = @@instances[sdk_key]
|
29
29
|
if client
|
30
30
|
if options
|
31
|
-
client.log.warn("
|
32
|
-
|
31
|
+
client.log.warn(3000, "There is an existing client instance for the specified SDK Key. " \
|
32
|
+
"No new client instance will be created and the specified options are ignored. " \
|
33
|
+
"Returning the existing client instance. SDK Key: '#{sdk_key}'.")
|
33
34
|
end
|
34
35
|
return client
|
35
36
|
end
|
@@ -105,9 +106,8 @@ module ConfigCat
|
|
105
106
|
def get_value(key, default_value, user = nil)
|
106
107
|
settings, fetch_time = _get_settings()
|
107
108
|
if settings.nil?
|
108
|
-
message = "
|
109
|
-
|
110
|
-
@log.error(message)
|
109
|
+
message = "Config JSON is not present when evaluating setting '#{key}'. Returning the `default_value` parameter that you specified in your application: '#{default_value}'."
|
110
|
+
@log.error(1000, message)
|
111
111
|
@hooks.invoke_on_flag_evaluated(EvaluationDetails.from_error(key, default_value, error: message))
|
112
112
|
return default_value
|
113
113
|
end
|
@@ -124,11 +124,11 @@ module ConfigCat
|
|
124
124
|
def get_value_details(key, default_value, user = nil)
|
125
125
|
settings, fetch_time = _get_settings()
|
126
126
|
if settings.nil?
|
127
|
-
message = "
|
128
|
-
|
129
|
-
|
130
|
-
@hooks.invoke_on_flag_evaluated(
|
131
|
-
return
|
127
|
+
message = "Config JSON is not present when evaluating setting '#{key}'. Returning the `default_value` parameter that you specified in your application: '#{default_value}'."
|
128
|
+
@log.error(1000, message)
|
129
|
+
details = EvaluationDetails.from_error(key, default_value, error: message)
|
130
|
+
@hooks.invoke_on_flag_evaluated(details)
|
131
|
+
return details
|
132
132
|
end
|
133
133
|
details = _evaluate(key, user, default_value, nil, settings, fetch_time)
|
134
134
|
return details
|
@@ -140,6 +140,7 @@ module ConfigCat
|
|
140
140
|
def get_all_keys
|
141
141
|
settings, _ = _get_settings()
|
142
142
|
if settings === nil
|
143
|
+
@log.error(1000, "Config JSON is not present. Returning empty list.")
|
143
144
|
return []
|
144
145
|
end
|
145
146
|
return settings.keys
|
@@ -152,15 +153,13 @@ module ConfigCat
|
|
152
153
|
# :param user [User] the user object to identify the caller.
|
153
154
|
# :return the variation ID.
|
154
155
|
def get_variation_id(key, default_variation_id, user = nil)
|
155
|
-
|
156
|
-
|
156
|
+
ConfigCat.logger.warn("get_variation_id is deprecated and will be removed in a future major version. " \
|
157
|
+
"Please use [get_value_details] instead.")
|
157
158
|
|
158
159
|
settings, fetch_time = _get_settings()
|
159
160
|
if settings === nil
|
160
|
-
message = "
|
161
|
-
|
162
|
-
[key, default_variation_id.to_s]
|
163
|
-
@log.error(message)
|
161
|
+
message = "Config JSON is not present when evaluating setting '#{key}'. Returning the `default_variation_id` parameter that you specified in your application: '#{default_variation_id}'."
|
162
|
+
@log.error(1000, message)
|
164
163
|
@hooks.invoke_on_flag_evaluated(EvaluationDetails.from_error(key, nil, error: message,
|
165
164
|
variation_id: default_variation_id))
|
166
165
|
return default_variation_id
|
@@ -174,12 +173,17 @@ module ConfigCat
|
|
174
173
|
# :param user [User] the user object to identify the caller.
|
175
174
|
# :return list of variation IDs
|
176
175
|
def get_all_variation_ids(user = nil)
|
177
|
-
|
178
|
-
|
176
|
+
ConfigCat.logger.warn("get_all_variation_ids is deprecated and will be removed in a future major version. " \
|
177
|
+
"Please use [get_value_details] instead.")
|
178
|
+
|
179
|
+
settings, _ = _get_settings()
|
180
|
+
if settings === nil
|
181
|
+
@log.error(1000, "Config JSON is not present. Returning empty list.")
|
182
|
+
return []
|
183
|
+
end
|
179
184
|
|
180
|
-
keys = get_all_keys()
|
181
185
|
variation_ids = []
|
182
|
-
for key in keys
|
186
|
+
for key in settings.keys
|
183
187
|
variation_id = get_variation_id(key, nil, user)
|
184
188
|
if !variation_id.equal?(nil)
|
185
189
|
variation_ids.push(variation_id)
|
@@ -195,7 +199,7 @@ module ConfigCat
|
|
195
199
|
def get_key_and_value(variation_id)
|
196
200
|
settings, _ = _get_settings()
|
197
201
|
if settings === nil
|
198
|
-
@log.
|
202
|
+
@log.error(1000, "Config JSON is not present. Returning nil.")
|
199
203
|
return nil
|
200
204
|
end
|
201
205
|
|
@@ -219,7 +223,7 @@ module ConfigCat
|
|
219
223
|
end
|
220
224
|
end
|
221
225
|
|
222
|
-
@log.error("Could not find the setting for the
|
226
|
+
@log.error(2011, "Could not find the setting for the specified variation ID: '#{variation_id}'.")
|
223
227
|
end
|
224
228
|
|
225
229
|
# Evaluates and returns the values of all feature flags and settings.
|
@@ -227,9 +231,14 @@ module ConfigCat
|
|
227
231
|
# :param user [User] the user object to identify the caller.
|
228
232
|
# :return dictionary of values
|
229
233
|
def get_all_values(user = nil)
|
230
|
-
|
234
|
+
settings, _ = _get_settings()
|
235
|
+
if settings === nil
|
236
|
+
@log.error(1000, "Config JSON is not present. Returning empty dictionary.")
|
237
|
+
return {}
|
238
|
+
end
|
239
|
+
|
231
240
|
all_values = {}
|
232
|
-
for key in keys
|
241
|
+
for key in settings.keys
|
233
242
|
value = get_value(key, nil, user)
|
234
243
|
if !value.equal?(nil)
|
235
244
|
all_values[key] = value
|
@@ -245,7 +254,7 @@ module ConfigCat
|
|
245
254
|
def get_all_value_details(user = nil)
|
246
255
|
settings, fetch_time = _get_settings()
|
247
256
|
if settings.nil?
|
248
|
-
@log.error("
|
257
|
+
@log.error(1000, "Config JSON is not present. Returning empty list.")
|
249
258
|
return []
|
250
259
|
end
|
251
260
|
|
@@ -282,14 +291,16 @@ module ConfigCat
|
|
282
291
|
|
283
292
|
# Configures the SDK to allow HTTP requests.
|
284
293
|
def set_online
|
285
|
-
|
286
|
-
|
294
|
+
if @_config_service
|
295
|
+
@_config_service.set_online
|
296
|
+
else
|
297
|
+
@log.warn(3202, "Client is configured to use the `LOCAL_ONLY` override behavior, thus `set_online()` has no effect.")
|
298
|
+
end
|
287
299
|
end
|
288
300
|
|
289
301
|
# Configures the SDK to not initiate HTTP requests and work only from its cache.
|
290
302
|
def set_offline
|
291
303
|
@_config_service.set_offline if @_config_service
|
292
|
-
@log.debug('Switched to OFFLINE mode.')
|
293
304
|
end
|
294
305
|
|
295
306
|
# Returns true when the SDK is configured not to initiate HTTP requests, otherwise false.
|
@@ -5,20 +5,20 @@ module ConfigCat
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def debug(message)
|
8
|
-
ConfigCat.logger.debug(message)
|
8
|
+
ConfigCat.logger.debug("[0] " + message)
|
9
9
|
end
|
10
10
|
|
11
|
-
def info(message)
|
12
|
-
ConfigCat.logger.info(message)
|
11
|
+
def info(event_id, message)
|
12
|
+
ConfigCat.logger.info("[" + event_id.to_s + "] " + message)
|
13
13
|
end
|
14
14
|
|
15
|
-
def warn(message)
|
16
|
-
ConfigCat.logger.warn(message)
|
15
|
+
def warn(event_id, message)
|
16
|
+
ConfigCat.logger.warn("[" + event_id.to_s + "] " + message)
|
17
17
|
end
|
18
18
|
|
19
|
-
def error(message)
|
19
|
+
def error(event_id, message)
|
20
20
|
@hooks.invoke_on_error(message)
|
21
|
-
ConfigCat.logger.error(message)
|
21
|
+
ConfigCat.logger.error("[" + event_id.to_s + "] " + message)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -140,12 +140,13 @@ module ConfigCat
|
|
140
140
|
# Try to download again with the new url
|
141
141
|
|
142
142
|
if redirect == RedirectMode::SHOULD_REDIRECT
|
143
|
-
@log.warn("
|
143
|
+
@log.warn(3002, "The `dataGovernance` parameter specified at the client initialization is not in sync with the preferences on the ConfigCat Dashboard. " \
|
144
|
+
"Read more: https://configcat.com/docs/advanced/data-governance/")
|
144
145
|
end
|
145
146
|
|
146
147
|
# To prevent loops we check if we retried at least 3 times with the new base_url
|
147
148
|
if retries >= 2
|
148
|
-
@log.error("
|
149
|
+
@log.error(1104, "Redirection loop encountered while trying to fetch config JSON. Please contact us at https://configcat.com/support/")
|
149
150
|
return fetch_response
|
150
151
|
end
|
151
152
|
|
@@ -182,23 +183,23 @@ module ConfigCat
|
|
182
183
|
when Net::HTTPNotModified
|
183
184
|
return FetchResponse.not_modified
|
184
185
|
when Net::HTTPNotFound, Net::HTTPForbidden
|
185
|
-
error = "
|
186
|
-
@log.error(error)
|
186
|
+
error = "Your SDK Key seems to be wrong. You can find the valid SDK Key at https://app.configcat.com/sdkkey. Received unexpected response: #{response}"
|
187
|
+
@log.error(1100, error)
|
187
188
|
return FetchResponse.failure(error, false)
|
188
189
|
else
|
189
190
|
raise Net::HTTPError.new("", response)
|
190
191
|
end
|
191
192
|
rescue Net::HTTPError => e
|
192
|
-
error = "Unexpected HTTP response was received: #{e}"
|
193
|
-
@log.error(error)
|
193
|
+
error = "Unexpected HTTP response was received while trying to fetch config JSON: #{e}"
|
194
|
+
@log.error(1101, error)
|
194
195
|
return FetchResponse.failure(error, true)
|
195
196
|
rescue Timeout::Error => e
|
196
|
-
error = "Request timed out. Timeout values: [connect: #{get_open_timeout()}s, read: #{get_read_timeout()}s]"
|
197
|
-
@log.error(error)
|
197
|
+
error = "Request timed out while trying to fetch config JSON. Timeout values: [connect: #{get_open_timeout()}s, read: #{get_read_timeout()}s]"
|
198
|
+
@log.error(1102, error)
|
198
199
|
return FetchResponse.failure(error, true)
|
199
200
|
rescue Exception => e
|
200
|
-
error = "
|
201
|
-
@log.error(error)
|
201
|
+
error = "Unexpected error occurred while trying to fetch config JSON: #{e}"
|
202
|
+
@log.error(1103, error)
|
202
203
|
return FetchResponse.failure(error, true)
|
203
204
|
end
|
204
205
|
end
|
@@ -24,7 +24,7 @@ module ConfigCat
|
|
24
24
|
@fetch_finished = Concurrent::Event.new
|
25
25
|
@start_time = Utils.get_utc_now_seconds_since_epoch
|
26
26
|
|
27
|
-
if @polling_mode.is_a?(AutoPollingMode)
|
27
|
+
if @polling_mode.is_a?(AutoPollingMode) && !@is_offline
|
28
28
|
start_poll
|
29
29
|
else
|
30
30
|
set_initialized
|
@@ -34,7 +34,10 @@ module ConfigCat
|
|
34
34
|
def get_settings
|
35
35
|
if @polling_mode.is_a?(LazyLoadingMode)
|
36
36
|
entry, _ = fetch_if_older(Utils.get_utc_now_seconds_since_epoch - @polling_mode.cache_refresh_interval_seconds)
|
37
|
-
return entry.
|
37
|
+
return !entry.empty? ?
|
38
|
+
[entry.config.fetch(FEATURE_FLAGS, {}), entry.fetch_time] :
|
39
|
+
[nil, Utils::DISTANT_PAST]
|
40
|
+
|
38
41
|
elsif @polling_mode.is_a?(AutoPollingMode) && !@initialized.set?
|
39
42
|
elapsed_time = Utils.get_utc_now_seconds_since_epoch - @start_time # Elapsed time in seconds
|
40
43
|
if elapsed_time < @polling_mode.max_init_wait_time_seconds
|
@@ -43,13 +46,17 @@ module ConfigCat
|
|
43
46
|
# Max wait time expired without result, notify subscribers with the cached config.
|
44
47
|
if !@initialized.set?
|
45
48
|
set_initialized
|
46
|
-
return
|
49
|
+
return !@cached_entry.empty? ?
|
50
|
+
[@cached_entry.config.fetch(FEATURE_FLAGS, {}), @cached_entry.fetch_time] :
|
51
|
+
[nil, Utils::DISTANT_PAST]
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
51
56
|
entry, _ = fetch_if_older(Utils::DISTANT_PAST, prefer_cache: true)
|
52
|
-
return entry.
|
57
|
+
return !entry.empty? ?
|
58
|
+
[entry.config.fetch(FEATURE_FLAGS, {}), entry.fetch_time] :
|
59
|
+
[nil, Utils::DISTANT_PAST]
|
53
60
|
end
|
54
61
|
|
55
62
|
# :return [RefreshResult]
|
@@ -68,7 +75,7 @@ module ConfigCat
|
|
68
75
|
if @polling_mode.is_a?(AutoPollingMode)
|
69
76
|
start_poll
|
70
77
|
end
|
71
|
-
@log.
|
78
|
+
@log.info(5200, 'Switched to ONLINE mode.')
|
72
79
|
end
|
73
80
|
end
|
74
81
|
|
@@ -84,7 +91,7 @@ module ConfigCat
|
|
84
91
|
@thread.join
|
85
92
|
end
|
86
93
|
|
87
|
-
@log.
|
94
|
+
@log.info(5200, 'Switched to OFFLINE mode.')
|
88
95
|
end
|
89
96
|
end
|
90
97
|
|
@@ -127,8 +134,8 @@ module ConfigCat
|
|
127
134
|
|
128
135
|
# If we are in offline mode we are not allowed to initiate fetch.
|
129
136
|
if @is_offline
|
130
|
-
offline_warning =
|
131
|
-
@log.warn(offline_warning)
|
137
|
+
offline_warning = "Client is in offline mode, it cannot initiate HTTP calls."
|
138
|
+
@log.warn(3200, offline_warning)
|
132
139
|
return @cached_entry, offline_warning
|
133
140
|
end
|
134
141
|
end
|
@@ -196,7 +203,7 @@ module ConfigCat
|
|
196
203
|
@cached_entry_string = json_string
|
197
204
|
return ConfigEntry.create_from_json(JSON.parse(json_string))
|
198
205
|
rescue Exception => e
|
199
|
-
@log.error("
|
206
|
+
@log.error(2200, "Error occurred while reading the cache. #{e}")
|
200
207
|
return ConfigEntry::EMPTY
|
201
208
|
end
|
202
209
|
end
|
@@ -205,7 +212,7 @@ module ConfigCat
|
|
205
212
|
begin
|
206
213
|
@config_cache.set(@cache_key, config_entry.to_json.to_json)
|
207
214
|
rescue Exception => e
|
208
|
-
@log.error("
|
215
|
+
@log.error(2201, "Error occurred while writing the cache. #{e}")
|
209
216
|
end
|
210
217
|
end
|
211
218
|
end
|
@@ -19,7 +19,7 @@ module ConfigCat
|
|
19
19
|
super(override_behaviour)
|
20
20
|
@log = log
|
21
21
|
if !File.exists?(file_path)
|
22
|
-
@log.error("
|
22
|
+
@log.error(1300, "Cannot find the local config file '#{file_path}'. This is a path that your application provided to the ConfigCat SDK by passing it to the `LocalFileFlagOverrides.new()` method. Read more: https://configcat.com/docs/sdk-reference/ruby/#json-file")
|
23
23
|
end
|
24
24
|
@_file_path = file_path
|
25
25
|
@_settings = nil
|
@@ -51,9 +51,9 @@ module ConfigCat
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
rescue JSON::ParserError => e
|
54
|
-
@log.error("
|
54
|
+
@log.error(2302, "Failed to decode JSON from the local config file '#{@_file_path}'. #{e}")
|
55
55
|
rescue Exception => e
|
56
|
-
@log.error("
|
56
|
+
@log.error(1302, "Failed to read the local config file '#{@_file_path}'. #{e}")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -15,25 +15,30 @@ module ConfigCat
|
|
15
15
|
def evaluate(key:, user:, default_value:, default_variation_id:, settings:)
|
16
16
|
setting_descriptor = settings[key]
|
17
17
|
if setting_descriptor === nil
|
18
|
-
error = "
|
19
|
-
|
18
|
+
error = "Failed to evaluate setting '#{key}' (the key was not found in config JSON). " \
|
19
|
+
"Returning the `default_value` parameter that you specified in your application: '#{default_value}'. " \
|
20
|
+
"Available keys: [#{settings.keys.map { |s| "'#{s}'" }.join(", ")}]."
|
21
|
+
@log.error(1001, error)
|
20
22
|
return default_value, default_variation_id, nil, nil, error
|
21
23
|
end
|
22
24
|
|
23
25
|
rollout_rules = setting_descriptor.fetch(ROLLOUT_RULES, [])
|
24
26
|
rollout_percentage_items = setting_descriptor.fetch(ROLLOUT_PERCENTAGE_ITEMS, [])
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
+
user_has_invalid_type = !user.equal?(nil) && !user.class.equal?(User)
|
29
|
+
if user_has_invalid_type
|
30
|
+
@log.warn(4001, "Cannot evaluate targeting rules and % options for setting '#{key}' (User Object is not an instance of User type).")
|
28
31
|
user = nil
|
29
32
|
end
|
30
33
|
if user === nil
|
31
|
-
if rollout_rules.size > 0 || rollout_percentage_items.size > 0
|
32
|
-
@log.warn("
|
34
|
+
if !user_has_invalid_type && (rollout_rules.size > 0 || rollout_percentage_items.size > 0)
|
35
|
+
@log.warn(3001, "Cannot evaluate targeting rules and % options for setting '#{key}' (User Object is missing). " \
|
36
|
+
"You should pass a User Object to the evaluation methods like `get_value()` in order to make targeting work properly. " \
|
37
|
+
"Read more: https://configcat.com/docs/advanced/user-object/")
|
33
38
|
end
|
34
39
|
return_value = setting_descriptor.fetch(VALUE, default_value)
|
35
40
|
return_variation_id = setting_descriptor.fetch(VARIATION_ID, default_variation_id)
|
36
|
-
@log.info("Returning [
|
41
|
+
@log.info(5000, "Returning [#{return_value}]")
|
37
42
|
return return_value, return_variation_id, nil, nil, nil
|
38
43
|
end
|
39
44
|
|
@@ -94,7 +99,7 @@ module ConfigCat
|
|
94
99
|
end
|
95
100
|
rescue ArgumentError => e
|
96
101
|
message = format_validation_error_rule(comparison_attribute, user_value, comparator, comparison_value, e.to_s)
|
97
|
-
@log.warn(message)
|
102
|
+
@log.warn(0, message)
|
98
103
|
log_entries.push(message)
|
99
104
|
next
|
100
105
|
end
|
@@ -112,7 +117,7 @@ module ConfigCat
|
|
112
117
|
end
|
113
118
|
rescue ArgumentError => e
|
114
119
|
message = format_validation_error_rule(comparison_attribute, user_value, comparator, comparison_value, e.to_s)
|
115
|
-
@log.warn(message)
|
120
|
+
@log.warn(0, message)
|
116
121
|
log_entries.push(message)
|
117
122
|
next
|
118
123
|
end
|
@@ -131,7 +136,7 @@ module ConfigCat
|
|
131
136
|
end
|
132
137
|
rescue Exception => e
|
133
138
|
message = format_validation_error_rule(comparison_attribute, user_value, comparator, comparison_value, e.to_s)
|
134
|
-
@log.warn(message)
|
139
|
+
@log.warn(0, message)
|
135
140
|
log_entries.push(message)
|
136
141
|
next
|
137
142
|
end
|
@@ -171,7 +176,7 @@ module ConfigCat
|
|
171
176
|
log_entries.push("Returning %s" % return_value)
|
172
177
|
return return_value, return_variation_id, nil, nil, nil
|
173
178
|
ensure
|
174
|
-
@log.info(log_entries.join("\n"))
|
179
|
+
@log.info(5000, log_entries.join("\n"))
|
175
180
|
end
|
176
181
|
end
|
177
182
|
|
data/lib/configcat/version.rb
CHANGED
data/lib/configcat.rb
CHANGED
@@ -85,9 +85,9 @@ module ConfigCat
|
|
85
85
|
flag_overrides: flag_overrides,
|
86
86
|
data_governance: data_governance
|
87
87
|
)
|
88
|
+
ConfigCat.logger.warn('create_client_with_auto_poll is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
88
89
|
client = ConfigCatClient.get(sdk_key, options)
|
89
90
|
client.hooks.add_on_config_changed(on_configuration_changed_callback) if on_configuration_changed_callback
|
90
|
-
client.log.warn('create_client_with_auto_poll is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
91
91
|
return client
|
92
92
|
end
|
93
93
|
|
@@ -134,8 +134,8 @@ module ConfigCat
|
|
134
134
|
flag_overrides: flag_overrides,
|
135
135
|
data_governance: data_governance
|
136
136
|
)
|
137
|
+
ConfigCat.logger.warn('create_client_with_lazy_load is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
137
138
|
client = ConfigCatClient.get(sdk_key, options)
|
138
|
-
client.log.warn('create_client_with_lazy_load is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
139
139
|
return client
|
140
140
|
end
|
141
141
|
|
@@ -180,8 +180,8 @@ module ConfigCat
|
|
180
180
|
flag_overrides: flag_overrides,
|
181
181
|
data_governance: data_governance
|
182
182
|
)
|
183
|
+
ConfigCat.logger.warn('create_client_with_manual_poll is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
183
184
|
client = ConfigCatClient.get(sdk_key, options)
|
184
|
-
client.log.warn('create_client_with_manual_poll is deprecated. Create the ConfigCat Client as a Singleton object with `configcatclient.get()` instead')
|
185
185
|
return client
|
186
186
|
end
|
187
187
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configcat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ConfigCat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|