mixpanel-ruby-openfeature 0.1.0 → 0.2.0

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: c55b0da96c5ff5418242aa05d02ace4cc3df3f56045ea320aa076f1e3d714191
4
- data.tar.gz: 4ed81d9dd91eb0be8b1bb1c6fdb77107189c20ace63b47d387d1cda02799d4be
3
+ metadata.gz: 88cb3b1e810da155b64b537686cf70561cb9eb63a17e9661c57b1de6eb9a75d4
4
+ data.tar.gz: 2a1e5c649c38d1aab34facb6842c69d020f549cbb22c1481aef8f5f474a7c261
5
5
  SHA512:
6
- metadata.gz: 4a69d07836c9366924801df9d947b7e3c6d4a2c62376d66e23a5404db49feefff4b4d80a9156c7fc25e566e1e57c7f8dcaba035391a234f67027501998a17f9b
7
- data.tar.gz: 7056a897f579fbae9f1261289a8a7178a1b6bd35952bcb67312dbf803fa9d630621d05eed5f7d2739d5a00791e54f1b13ce5a456b3faf16e859cc9ca0dea07a0
6
+ metadata.gz: 89478fd20dbe2bcbb420871ce616b7812b9d13297f2f6eeb966fd14fb8edc564353a1332f2f80808280f632b462492513a58de513a313ab7d6104f273bb4471f
7
+ data.tar.gz: cbbdc65f9bda06d80fdd4961d1337549013f30582aa6c16f9bb5fc6adb308929f6726669d257714562f863c544cfbfaa18eef396dff4cfd0ec5e37c5588db465
@@ -69,16 +69,41 @@ module Mixpanel
69
69
 
70
70
  begin
71
71
  result = @flags_provider.get_variant(flag_key, fallback, context, report_exposure: true)
72
- rescue StandardError
73
- return error_result(default_value, ::OpenFeature::SDK::Provider::ErrorCode::GENERAL)
72
+ rescue StandardError => e
73
+ return error_result(default_value, ::OpenFeature::SDK::Provider::ErrorCode::GENERAL, e.message)
74
74
  end
75
75
 
76
- if result.equal?(fallback)
76
+ # variant_source distinguishes local / remote / fallback. When fallback,
77
+ # fallback_reason carries the specific reason (PHP-aligned constants)
78
+ # so we can map each to the spec-correct OpenFeature response instead
79
+ # of collapsing every fallback to FLAG_NOT_FOUND. SDK-83: BACKEND_ERROR
80
+ # also carries the backend message, forwarded as error_message.
81
+ case result.fallback_reason&.kind
82
+ when :flag_not_found
77
83
  return ::OpenFeature::SDK::Provider::ResolutionDetails.new(
78
84
  value: default_value,
79
85
  error_code: ::OpenFeature::SDK::Provider::ErrorCode::FLAG_NOT_FOUND,
80
86
  reason: ::OpenFeature::SDK::Provider::Reason::DEFAULT
81
87
  )
88
+ when :missing_context_key
89
+ return error_result(
90
+ default_value,
91
+ ::OpenFeature::SDK::Provider::ErrorCode::TARGETING_KEY_MISSING,
92
+ result.fallback_reason.message
93
+ )
94
+ when :no_rollout_match
95
+ # Flag exists, user just didn't match any rollout — per the
96
+ # OpenFeature spec this is `reason: DEFAULT` with no error.
97
+ return ::OpenFeature::SDK::Provider::ResolutionDetails.new(
98
+ value: default_value,
99
+ reason: ::OpenFeature::SDK::Provider::Reason::DEFAULT
100
+ )
101
+ when :backend_error
102
+ return error_result(
103
+ default_value,
104
+ ::OpenFeature::SDK::Provider::ErrorCode::GENERAL,
105
+ result.fallback_reason.message
106
+ )
82
107
  end
83
108
 
84
109
  value = result.variant_value
@@ -158,10 +183,11 @@ module Mixpanel
158
183
  end
159
184
  end
160
185
 
161
- def error_result(default_value, error_code)
186
+ def error_result(default_value, error_code, error_message = nil)
162
187
  ::OpenFeature::SDK::Provider::ResolutionDetails.new(
163
188
  value: default_value,
164
189
  error_code: error_code,
190
+ error_message: error_message,
165
191
  reason: ::OpenFeature::SDK::Provider::Reason::ERROR
166
192
  )
167
193
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mixpanel
4
+ module OpenFeature
5
+ VERSION = '0.2.0'
6
+ end
7
+ end
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'openfeature/version'
3
4
  require_relative 'openfeature/provider'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixpanel-ruby-openfeature
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mixpanel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-09 00:00:00.000000000 Z
11
+ date: 2026-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openfeature-sdk
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.1'
33
+ version: '3.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.1'
40
+ version: '3.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +88,7 @@ extra_rdoc_files: []
88
88
  files:
89
89
  - lib/mixpanel/openfeature.rb
90
90
  - lib/mixpanel/openfeature/provider.rb
91
+ - lib/mixpanel/openfeature/version.rb
91
92
  homepage: https://mixpanel.com
92
93
  licenses:
93
94
  - Apache-2.0