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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47d81093ca138f86158d4c964efd30df01421a1fab08c6beadb8d80781cfa39b
4
- data.tar.gz: 7ca8768e6ceb39e74f6905d44c6542c76381a351bd628a6a5754a29fcf5af30c
3
+ metadata.gz: 635155121c3c193de787f3f18471838ad5899df6eb14ae3d123718769b4f4cd5
4
+ data.tar.gz: f61960abcb913b18831c1d3556bd632306bf1a85c73c330c74a97ea3ba70f247
5
5
  SHA512:
6
- metadata.gz: 5561844d134133bc4c948f557013cb7a4128c5848a12658311e44cd02b0d5ef033bf43ec7314e63139d9adf826ea94e2337ce77e923b7b9ef3a0ac0263b0af9b
7
- data.tar.gz: 26386d521bf09da5526c2363cee3eb6ad55b58dc30f217801963e96dc30137518baf9de7550889d66b06b009ef7504f0a4abe571d3b174f64ad3dc0171cf5d4e
6
+ metadata.gz: 3bea27cd10068987a07a5190124205ba4d35c4992f68f5f9380d1da94cb0319c4fab2f3108789d610b13a9530471d0fefdb6bc2bd80e2da4d4544ff1d7db53a5
7
+ data.tar.gz: 8c65fb56ce39d1316d5c86abe7f032ee4aa90aabbe5e1224e8edf2f29549ce932cdbafa254990323b36af8d50a86fccdbdce0ea6c5d9ae46eb005e769012458d
@@ -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
- flags_response[:featureFlags] = flags_hash.transform_values(&:get_value).transform_keys(&:to_sym)
135
- flags_response[:featureFlagPayloads] = flags_hash.transform_values(&:payload).transform_keys(&:to_sym)
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
- flags = stringify_keys(flags_and_payloads[:featureFlags] || {})
313
- payloads = stringify_keys(flags_and_payloads[:featureFlagPayloads] || {})
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}")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PostHog
4
- VERSION = '3.5.1'
4
+ VERSION = '3.5.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posthog-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.1
4
+ version: 3.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''