posthog-ruby 3.5.1 → 3.5.2
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/posthog/feature_flag.rb +2 -1
- data/lib/posthog/feature_flags.rb +17 -4
- data/lib/posthog/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 635155121c3c193de787f3f18471838ad5899df6eb14ae3d123718769b4f4cd5
|
|
4
|
+
data.tar.gz: f61960abcb913b18831c1d3556bd632306bf1a85c73c330c74a97ea3ba70f247
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3bea27cd10068987a07a5190124205ba4d35c4992f68f5f9380d1da94cb0319c4fab2f3108789d610b13a9530471d0fefdb6bc2bd80e2da4d4544ff1d7db53a5
|
|
7
|
+
data.tar.gz: 8c65fb56ce39d1316d5c86abe7f032ee4aa90aabbe5e1224e8edf2f29549ce932cdbafa254990323b36af8d50a86fccdbdce0ea6c5d9ae46eb005e769012458d
|
data/lib/posthog/feature_flag.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Represents a feature flag returned by /flags v2
|
|
4
4
|
module PostHog
|
|
5
5
|
class FeatureFlag
|
|
6
|
-
attr_reader :key, :enabled, :variant, :reason, :metadata
|
|
6
|
+
attr_reader :key, :enabled, :variant, :reason, :metadata, :failed
|
|
7
7
|
|
|
8
8
|
def initialize(json)
|
|
9
9
|
json.transform_keys!(&:to_s)
|
|
@@ -12,6 +12,7 @@ module PostHog
|
|
|
12
12
|
@variant = json['variant']
|
|
13
13
|
@reason = json['reason'] ? EvaluationReason.new(json['reason']) : nil
|
|
14
14
|
@metadata = json['metadata'] ? FeatureFlagMetadata.new(json['metadata'].transform_keys(&:to_s)) : nil
|
|
15
|
+
@failed = json['failed']
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
# TODO: Rename to `value` in future version
|
|
@@ -131,8 +131,10 @@ module PostHog
|
|
|
131
131
|
FeatureFlag.new(flag)
|
|
132
132
|
end
|
|
133
133
|
flags_response[:flags] = flags_hash
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
# Filter out flags that failed evaluation to avoid overwriting cached values
|
|
135
|
+
successful_flags = flags_hash.reject { |_, flag| flag.failed == true }
|
|
136
|
+
flags_response[:featureFlags] = successful_flags.transform_values(&:get_value).transform_keys(&:to_sym)
|
|
137
|
+
flags_response[:featureFlagPayloads] = successful_flags.transform_values(&:payload).transform_keys(&:to_sym)
|
|
136
138
|
elsif flags_response[:featureFlags]
|
|
137
139
|
# v3 format
|
|
138
140
|
flags_response[:featureFlags] = flags_response[:featureFlags] || {}
|
|
@@ -309,8 +311,19 @@ module PostHog
|
|
|
309
311
|
flags = {}
|
|
310
312
|
payloads = {}
|
|
311
313
|
else
|
|
312
|
-
|
|
313
|
-
|
|
314
|
+
server_flags = stringify_keys(flags_and_payloads[:featureFlags] || {})
|
|
315
|
+
server_payloads = stringify_keys(flags_and_payloads[:featureFlagPayloads] || {})
|
|
316
|
+
|
|
317
|
+
if errors_while_computing
|
|
318
|
+
# Merge server results into locally-evaluated results so that flags which
|
|
319
|
+
# failed server-side evaluation (already filtered out by get_flags) don't
|
|
320
|
+
# overwrite valid locally-evaluated values.
|
|
321
|
+
flags = stringify_keys(flags).merge(server_flags)
|
|
322
|
+
payloads = stringify_keys(payloads).merge(server_payloads)
|
|
323
|
+
else
|
|
324
|
+
flags = server_flags
|
|
325
|
+
payloads = server_payloads
|
|
326
|
+
end
|
|
314
327
|
end
|
|
315
328
|
rescue StandardError => e
|
|
316
329
|
@on_error.call(-1, "Error computing flag remotely: #{e}")
|
data/lib/posthog/version.rb
CHANGED