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 +4 -4
- data/lib/mixpanel/openfeature/provider.rb +30 -4
- data/lib/mixpanel/openfeature/version.rb +7 -0
- data/lib/mixpanel/openfeature.rb +1 -0
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 88cb3b1e810da155b64b537686cf70561cb9eb63a17e9661c57b1de6eb9a75d4
|
|
4
|
+
data.tar.gz: 2a1e5c649c38d1aab34facb6842c69d020f549cbb22c1481aef8f5f474a7c261
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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
|
data/lib/mixpanel/openfeature.rb
CHANGED
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.
|
|
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-
|
|
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.
|
|
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.
|
|
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
|