vwo-sdk 1.23.0 → 1.24.1
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/lib/vwo/constants.rb +1 -1
- data/lib/vwo/core/variation_decider.rb +20 -8
- data/lib/vwo/enums.rb +5 -6
- data/lib/vwo/schemas/settings_file.rb +4 -0
- data/lib/vwo/services/settings_file_manager.rb +3 -1
- data/lib/vwo/utils/custom_dimensions.rb +3 -1
- data/lib/vwo/utils/impression.rb +4 -2
- data/lib/vwo/utils/utility.rb +6 -0
- data/lib/vwo.rb +8 -50
- 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: 68dad84f9b03958ca980c9f9ef2dc91faabdf57bfc33a55baaf5316123eb010b
|
4
|
+
data.tar.gz: de01033026fe5f493d7a6a1419c65a60f41a43ac85526a4f16f90448ff31a3bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81bfc307f0aa0482c3426edd657ac960fde1d95843401e1f583dc96b6785ef3c6e59f10b1d577424da40d956cd792618275a4451c1f4dc4dff3458454d15f238
|
7
|
+
data.tar.gz: 1f8dadef134e4064962bf606b43de36f9b4e4d4ed00c932948b56ab45960e430e42b20edb9e2eae65709091067dce162959165028698d0010ff767657887f1fd
|
data/lib/vwo/constants.rb
CHANGED
@@ -27,7 +27,7 @@ class VWO
|
|
27
27
|
HTTP_PROTOCOL = 'http://'
|
28
28
|
HTTPS_PROTOCOL = 'https://'
|
29
29
|
URL_NAMESPACE = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'
|
30
|
-
SDK_VERSION = '1.
|
30
|
+
SDK_VERSION = '1.24.1'
|
31
31
|
SDK_NAME = 'ruby'
|
32
32
|
VWO_DELIMITER = '_vwo_'
|
33
33
|
MAX_EVENTS_PER_REQUEST = 5000
|
@@ -95,6 +95,10 @@ class VWO
|
|
95
95
|
:vwo_user_id => generator_for(user_id, @settings_file['accountId'])
|
96
96
|
}
|
97
97
|
|
98
|
+
if campaign.has_key?("name")
|
99
|
+
decision[:campaign_name] = campaign['name']
|
100
|
+
end
|
101
|
+
|
98
102
|
if is_campaign_part_of_group
|
99
103
|
group_id = @settings_file["campaignGroups"][campaign["id"].to_s]
|
100
104
|
decision[:group_id] = group_id
|
@@ -459,10 +463,19 @@ class VWO
|
|
459
463
|
# @return[Hash]
|
460
464
|
|
461
465
|
def evaluate_whitelisting(user_id, campaign, api_name, campaign_key, variation_targeting_variables = {}, disable_logs = false)
|
462
|
-
if
|
463
|
-
|
466
|
+
if campaign.key?('isUserListEnabled') && campaign["isUserListEnabled"]
|
467
|
+
vwo_user_id = generator_for(user_id, @settings_file['accountId'])
|
468
|
+
if variation_targeting_variables.nil?
|
469
|
+
variation_targeting_variables = { _vwo_user_id: vwo_user_id }
|
470
|
+
else
|
471
|
+
variation_targeting_variables[:_vwo_user_id] = vwo_user_id
|
472
|
+
end
|
464
473
|
else
|
465
|
-
variation_targeting_variables
|
474
|
+
if variation_targeting_variables.nil?
|
475
|
+
variation_targeting_variables = { _vwo_user_id: user_id }
|
476
|
+
else
|
477
|
+
variation_targeting_variables[:_vwo_user_id] = user_id
|
478
|
+
end
|
466
479
|
end
|
467
480
|
targeted_variations = []
|
468
481
|
|
@@ -485,7 +498,7 @@ class VWO
|
|
485
498
|
user_id: user_id,
|
486
499
|
status: status,
|
487
500
|
custom_variables: variation_targeting_variables,
|
488
|
-
variation_name: variation['name'],
|
501
|
+
variation_name: status == StatusEnum::PASSED ? (campaign['type'] == CampaignTypes::FEATURE_ROLLOUT ? 'and hence becomes part of the rollout' : "for " + variation['name']) : '',
|
489
502
|
segmentation_type: SegmentationTypeEnum::WHITELISTING,
|
490
503
|
api_name: api_name
|
491
504
|
),
|
@@ -865,8 +878,8 @@ class VWO
|
|
865
878
|
campaign_key: campaign_key,
|
866
879
|
user_id: user_id,
|
867
880
|
status: status,
|
868
|
-
custom_variables: variation_targeting_variables,
|
869
|
-
variation_name: status == StatusEnum::PASSED ? "and #{variation['name']} is Assigned" : ' ',
|
881
|
+
custom_variables: variation_targeting_variables ? variation_targeting_variables : {},
|
882
|
+
variation_name: (status == StatusEnum::PASSED && campaign['type'] != CampaignTypes::FEATURE_ROLLOUT) ? "and #{variation['name']} is Assigned" : ' ',
|
870
883
|
segmentation_type: SegmentationTypeEnum::WHITELISTING,
|
871
884
|
api_name: api_name
|
872
885
|
),
|
@@ -879,10 +892,9 @@ class VWO
|
|
879
892
|
decision[:variation_id] = variation['id']
|
880
893
|
if campaign['type'] == CampaignTypes::FEATURE_TEST
|
881
894
|
decision[:is_feature_enabled] = variation['isFeatureEnabled']
|
882
|
-
elsif campaign['type'] == CampaignTypes::VISUAL_AB
|
883
|
-
decision[:is_user_whitelisted] = !!variation['name']
|
884
895
|
end
|
885
896
|
end
|
897
|
+
decision[:is_user_whitelisted] = true
|
886
898
|
@hooks_manager.execute(decision)
|
887
899
|
end
|
888
900
|
|
data/lib/vwo/enums.rb
CHANGED
@@ -106,7 +106,7 @@ class VWO
|
|
106
106
|
IMPRESSION_FOR_TRACK_USER = '(%<file>s): Impression built for track-user - %<properties>s'
|
107
107
|
IMPRESSION_FOR_TRACK_GOAL = '(%<file>s): Impression built for track-goal - %<properties>s'
|
108
108
|
GOT_VARIATION_FOR_USER = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s got variationName:%<variation_name>s'
|
109
|
-
SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s
|
109
|
+
SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s %<variation_name>s'
|
110
110
|
PARAMS_FOR_PUSH_CALL = '(%<file>s): Params for push call - %<properties>s'
|
111
111
|
CAMPAIGN_NOT_ACTIVATED = '(%<file>s): Campaign:%<campaign_key>s for User ID:%<user_id>s is not yet activated for API:%<api_name>s. Use activate API to activate A/B test or isFeatureEnabled API to activate Feature Test.'
|
112
112
|
BATCH_EVENT_LIMIT_EXCEEDED = '(%<file>s): Impression event - %<end_point>s failed due to exceeding payload size. Parameter eventsPerRequest in batchEvents config in launch API has value:%<eventsPerRequest>s for accountId:%<accountId>s. Please read the official documentation for knowing the size limits.'
|
@@ -128,9 +128,9 @@ class VWO
|
|
128
128
|
AUDIENCE_CONDITION_NOT_MET = '(%<file>s): userId:%<user_id>s does not become part of campaign because of not meeting audience conditions'
|
129
129
|
GOT_VARIATION_FOR_USER = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s got variationName:%<variation_name>s'
|
130
130
|
USER_GOT_NO_VARIATION = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s did not allot any variation'
|
131
|
-
IMPRESSION_SUCCESS = '(%<file>s): Impression event - %<end_point>s was successfully received by VWO having main keys:
|
132
|
-
MAIN_KEYS_FOR_IMPRESSION = '(%<file>s): Having main keys:
|
133
|
-
MAIN_KEYS_FOR_PUSH_API = '(%<file>s): Having main keys:
|
131
|
+
IMPRESSION_SUCCESS = '(%<file>s): Impression event - %<end_point>s was successfully received by VWO having main keys: accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s'
|
132
|
+
MAIN_KEYS_FOR_IMPRESSION = '(%<file>s): Having main keys: accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s}'
|
133
|
+
MAIN_KEYS_FOR_PUSH_API = '(%<file>s): Having main keys: accountId:%<account_id>s u:%<u>s and tags:%<tags>s}'
|
134
134
|
INVALID_VARIATION_KEY = '(%<file>s): Variation was not assigned to userId:%<user_id>s for campaign:%<campaign_key>s'
|
135
135
|
|
136
136
|
USER_IN_FEATURE_ROLLOUT = '(%<file>s): User ID:%<user_id>s is in feature rollout:%<campaign_key>s'
|
@@ -143,7 +143,7 @@ class VWO
|
|
143
143
|
USER_PASSED_SEGMENTATION = '(%<file>s): UserId:%<user_id>s of campaign:%<campaign_key>s with custom_variables:%<custom_variables>s passed segmentation'
|
144
144
|
USER_FAILED_SEGMENTATION = '(%<file>s): UserId:%<user_id>s of campaign:%<campaign_key>s with custom_variables:%<custom_variables>s failed segmentation'
|
145
145
|
|
146
|
-
NO_CUSTOM_VARIABLES = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s
|
146
|
+
NO_CUSTOM_VARIABLES = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s customVariables are not passed for campaign:%<campaign_key>s and campaign has pre-segmentation'
|
147
147
|
SKIPPING_SEGMENTATION = '(%<file>s): In API: %<api_name>s, Skipping segmentation:%<variation>s for UserId:%<user_id>s as no valid segments found in campaign:%<campaign_key>s'
|
148
148
|
|
149
149
|
SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s %<variation_name>s'
|
@@ -201,7 +201,6 @@ class VWO
|
|
201
201
|
TAG_KEY_LENGTH_EXCEEDED = '(%<file>s): In API: %<api_name>s, the length of tag_key:%<tag_key>s and userID: %<user_id>s can not be greater than 255'
|
202
202
|
TRACK_API_MISSING_PARAMS = '(%<file>s): "track" API got bad parameters. It expects campaignKey(null/String/array) as first, userId(String/Number) as second and goalIdentifier (string) as third argument. options is revenueValue(Float/Number/String) and is required for revenue goal only.'
|
203
203
|
NO_CAMPAIGN_FOUND = '(%<file>s): No campaign found for goal_identifier:%<goal_identifier>s. Please verify from VWO app.'
|
204
|
-
INVALID_TRACK_RETURNING_USER_VALUE = '(%<file>s): should_track_returning_user should be boolean'
|
205
204
|
INVALID_GOAL_TYPE = '(%<file>s): goal_type_to_track should be certain strings'
|
206
205
|
EVENT_BATCHING_NOT_OBJECT = '(%<file>s): Batch events settings are not of type object.'
|
207
206
|
EVENTS_PER_REQUEST_INVALID = '(%<file>s): events_per_request should be an integer'
|
@@ -73,6 +73,9 @@ class VWO
|
|
73
73
|
key: {
|
74
74
|
type: ['string']
|
75
75
|
},
|
76
|
+
name: {
|
77
|
+
type: ['string']
|
78
|
+
},
|
76
79
|
status: {
|
77
80
|
type: ['string']
|
78
81
|
},
|
@@ -92,6 +95,7 @@ class VWO
|
|
92
95
|
}
|
93
96
|
},
|
94
97
|
isBucketingSeedEnabled: ['boolean'],
|
98
|
+
isUserListEnabled: ['boolean'],
|
95
99
|
minItems: 2
|
96
100
|
}
|
97
101
|
},
|
@@ -17,6 +17,7 @@ require_relative '../logger'
|
|
17
17
|
require_relative '../enums'
|
18
18
|
require_relative '../constants'
|
19
19
|
require_relative './impression'
|
20
|
+
require_relative './utility'
|
20
21
|
|
21
22
|
# Utility module for helper math and random functions
|
22
23
|
class VWO
|
@@ -25,6 +26,7 @@ class VWO
|
|
25
26
|
include VWO::CONSTANTS
|
26
27
|
include VWO::Enums
|
27
28
|
include VWO::Utils::Impression
|
29
|
+
include VWO::Utils::Utility
|
28
30
|
|
29
31
|
def get_url_params(settings_file, tag_key, tag_value, user_id, sdk_key)
|
30
32
|
url = HTTPS_PROTOCOL + ENDPOINTS::BASE_URL + ENDPOINTS::PUSH
|
@@ -39,7 +41,7 @@ class VWO
|
|
39
41
|
format(
|
40
42
|
LogMessageEnum::DebugMessages::PARAMS_FOR_PUSH_CALL,
|
41
43
|
file: FileNameEnum::CustomDimensionsUtil,
|
42
|
-
properties:
|
44
|
+
properties: remove_sensitive_properties(params)
|
43
45
|
)
|
44
46
|
)
|
45
47
|
params
|
data/lib/vwo/utils/impression.rb
CHANGED
@@ -19,6 +19,7 @@ require_relative '../enums'
|
|
19
19
|
require_relative '../constants'
|
20
20
|
require_relative 'function'
|
21
21
|
require_relative 'uuid'
|
22
|
+
require_relative 'utility'
|
22
23
|
|
23
24
|
# Creates the impression from the arguments passed
|
24
25
|
class VWO
|
@@ -28,6 +29,7 @@ class VWO
|
|
28
29
|
include VWO::CONSTANTS
|
29
30
|
include VWO::Utils::Function
|
30
31
|
include UUID
|
32
|
+
include VWO::Utils::Utility
|
31
33
|
|
32
34
|
# Creates the impression from the arguments passed
|
33
35
|
#
|
@@ -76,7 +78,7 @@ class VWO
|
|
76
78
|
format(
|
77
79
|
LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_USER,
|
78
80
|
file: FileNameEnum::ImpressionUtil,
|
79
|
-
properties:
|
81
|
+
properties: remove_sensitive_properties(impression)
|
80
82
|
)
|
81
83
|
)
|
82
84
|
else
|
@@ -88,7 +90,7 @@ class VWO
|
|
88
90
|
format(
|
89
91
|
LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_GOAL,
|
90
92
|
file: FileNameEnum::ImpressionUtil,
|
91
|
-
properties:
|
93
|
+
properties: remove_sensitive_properties(impression)
|
92
94
|
)
|
93
95
|
)
|
94
96
|
end
|
data/lib/vwo/utils/utility.rb
CHANGED
data/lib/vwo.rb
CHANGED
@@ -89,25 +89,6 @@ class VWO
|
|
89
89
|
return
|
90
90
|
end
|
91
91
|
|
92
|
-
if options.key?(:should_track_returning_user)
|
93
|
-
if [true, false].include? options[:should_track_returning_user]
|
94
|
-
@should_track_returning_user = options[:should_track_returning_user]
|
95
|
-
usage_stats[:tr] = 1 if @should_track_returning_user
|
96
|
-
else
|
97
|
-
@logger.log(
|
98
|
-
LogLevelEnum::ERROR,
|
99
|
-
format(
|
100
|
-
LogMessageEnum::ErrorMessages::INVALID_TRACK_RETURNING_USER_VALUE,
|
101
|
-
file: FILE
|
102
|
-
)
|
103
|
-
)
|
104
|
-
@is_instance_valid = false
|
105
|
-
return
|
106
|
-
end
|
107
|
-
else
|
108
|
-
@should_track_returning_user = false
|
109
|
-
end
|
110
|
-
|
111
92
|
if options.key?(:goal_type_to_track)
|
112
93
|
if GOAL_TYPES.key? options[:goal_type_to_track]
|
113
94
|
@goal_type_to_track = options[:goal_type_to_track]
|
@@ -303,10 +284,9 @@ class VWO
|
|
303
284
|
custom_variables = options[:custom_variables]
|
304
285
|
variation_targeting_variables = options[:variation_targeting_variables]
|
305
286
|
|
306
|
-
should_track_returning_user = get_should_track_returning_user(options)
|
307
287
|
# Validate input parameters
|
308
288
|
unless valid_string?(campaign_key) && valid_string?(user_id) && (custom_variables.nil? || valid_hash?(custom_variables)) &&
|
309
|
-
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables))
|
289
|
+
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables))
|
310
290
|
@logger.log(
|
311
291
|
LogLevelEnum::ERROR,
|
312
292
|
format(
|
@@ -381,7 +361,7 @@ class VWO
|
|
381
361
|
return
|
382
362
|
end
|
383
363
|
|
384
|
-
if is_eligible_to_send_impression(
|
364
|
+
if is_eligible_to_send_impression()
|
385
365
|
if defined?(@batch_events)
|
386
366
|
impression = create_bulk_event_impression(
|
387
367
|
@settings_file,
|
@@ -408,7 +388,6 @@ class VWO
|
|
408
388
|
format(
|
409
389
|
LogMessageEnum::InfoMessages::IMPRESSION_SUCCESS,
|
410
390
|
file: FILE,
|
411
|
-
sdk_key: @sdk_key,
|
412
391
|
account_id: @account_id,
|
413
392
|
campaign_id: campaign['id'],
|
414
393
|
variation_id: variation['id'],
|
@@ -588,12 +567,11 @@ class VWO
|
|
588
567
|
revenue_value = options[:revenue_value]
|
589
568
|
custom_variables = options[:custom_variables]
|
590
569
|
variation_targeting_variables = options[:variation_targeting_variables]
|
591
|
-
should_track_returning_user = get_should_track_returning_user(options)
|
592
570
|
goal_type_to_track = get_goal_type_to_track(options)
|
593
571
|
|
594
572
|
# Check for valid args
|
595
573
|
unless (valid_string?(campaign_key) || campaign_key.is_a?(Array) || campaign_key.nil?) && valid_string?(user_id) && valid_string?(goal_identifier) && (custom_variables.nil? || valid_hash?(custom_variables)) &&
|
596
|
-
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables)) &&
|
574
|
+
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables)) && (GOAL_TYPES.key? (goal_type_to_track))
|
597
575
|
# log invalid params
|
598
576
|
@logger.log(
|
599
577
|
LogLevelEnum::ERROR,
|
@@ -683,7 +661,7 @@ class VWO
|
|
683
661
|
updated_goal_identifier += VWO_DELIMITER + goal_identifier
|
684
662
|
@variation_decider.save_user_storage(user_id, campaign['key'], campaign['name'], variation['name'], updated_goal_identifier) if variation['name']
|
685
663
|
# set variation at user storage
|
686
|
-
|
664
|
+
else
|
687
665
|
@logger.log(
|
688
666
|
LogLevelEnum::INFO,
|
689
667
|
format(
|
@@ -725,7 +703,6 @@ class VWO
|
|
725
703
|
format(
|
726
704
|
LogMessageEnum::InfoMessages::IMPRESSION_SUCCESS,
|
727
705
|
file: FILE,
|
728
|
-
sdk_key: @sdk_key,
|
729
706
|
account_id: @account_id,
|
730
707
|
campaign_id: campaign['id'],
|
731
708
|
variation_id: variation['id'],
|
@@ -737,7 +714,6 @@ class VWO
|
|
737
714
|
format(
|
738
715
|
LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_IMPRESSION,
|
739
716
|
file: FILE,
|
740
|
-
sdk_key: @sdk_key,
|
741
717
|
campaign_id: impression[:experiment_id],
|
742
718
|
account_id: impression[:account_id],
|
743
719
|
variation_id: impression[:combination]
|
@@ -809,7 +785,6 @@ class VWO
|
|
809
785
|
# Retrieve custom variables
|
810
786
|
custom_variables = options[:custom_variables]
|
811
787
|
variation_targeting_variables = options[:variation_targeting_variables]
|
812
|
-
should_track_returning_user = get_should_track_returning_user(options)
|
813
788
|
@logger.log(
|
814
789
|
LogLevelEnum::INFO,
|
815
790
|
format(
|
@@ -821,7 +796,7 @@ class VWO
|
|
821
796
|
)
|
822
797
|
# Validate input parameters
|
823
798
|
unless valid_string?(campaign_key) && valid_string?(user_id) && (custom_variables.nil? || valid_hash?(custom_variables)) &&
|
824
|
-
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables))
|
799
|
+
(variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables))
|
825
800
|
@logger.log(
|
826
801
|
LogLevelEnum::ERROR,
|
827
802
|
format(
|
@@ -877,7 +852,7 @@ class VWO
|
|
877
852
|
|
878
853
|
# if campaign type is feature_test Send track call to server
|
879
854
|
|
880
|
-
if is_eligible_to_send_impression(
|
855
|
+
if is_eligible_to_send_impression()
|
881
856
|
if defined?(@batch_events)
|
882
857
|
impression = create_bulk_event_impression(
|
883
858
|
@settings_file,
|
@@ -905,7 +880,6 @@ class VWO
|
|
905
880
|
LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_IMPRESSION,
|
906
881
|
file: FILE,
|
907
882
|
campaign_id: impression[:experiment_id],
|
908
|
-
sdk_key: @sdk_key,
|
909
883
|
account_id: impression[:account_id],
|
910
884
|
variation_id: impression[:combination]
|
911
885
|
)
|
@@ -1206,7 +1180,6 @@ class VWO
|
|
1206
1180
|
format(
|
1207
1181
|
LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_PUSH_API,
|
1208
1182
|
file: FILE,
|
1209
|
-
sdk_key: @sdk_key,
|
1210
1183
|
u: impression['u'],
|
1211
1184
|
account_id: impression['account_id'],
|
1212
1185
|
tags: impression['tags']
|
@@ -1227,23 +1200,8 @@ class VWO
|
|
1227
1200
|
false
|
1228
1201
|
end
|
1229
1202
|
|
1230
|
-
def
|
1231
|
-
|
1232
|
-
options[:should_track_returning_user] = @should_track_returning_user
|
1233
|
-
elsif ![true, false].include?(options[:should_track_returning_user])
|
1234
|
-
@logger.log(
|
1235
|
-
LogLevelEnum::ERROR,
|
1236
|
-
format(
|
1237
|
-
LogMessageEnum::ErrorMessages::INVALID_TRACK_RETURNING_USER_VALUE,
|
1238
|
-
file: FILE
|
1239
|
-
)
|
1240
|
-
)
|
1241
|
-
end
|
1242
|
-
options[:should_track_returning_user]
|
1243
|
-
end
|
1244
|
-
|
1245
|
-
def is_eligible_to_send_impression(should_track_returning_user = false)
|
1246
|
-
!@user_storage || !@variation_decider.has_stored_variation || should_track_returning_user
|
1203
|
+
def is_eligible_to_send_impression()
|
1204
|
+
!@user_storage || !@variation_decider.has_stored_variation
|
1247
1205
|
end
|
1248
1206
|
|
1249
1207
|
def flush_events
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vwo-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.24.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VWO
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: codecov
|