subflag-rails 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/CHANGELOG.md +13 -0
- data/lib/subflag/rails/client.rb +11 -11
- data/lib/subflag/rails/context_builder.rb +9 -5
- data/lib/subflag/rails/version.rb +1 -1
- data/lib/subflag/rails.rb +2 -2
- metadata +10 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b994b3be254b327ab4c2d7f94ed4a30a9af6a47af2c19b58089b02b5d8487e5
|
|
4
|
+
data.tar.gz: 267fb6f5df4a770f7133ee475ae364118bc2459031137434160cf17ddf91033c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bda7f1465a5f3eabf2baa0190c372c4687b731ad5cb43a9d11851b78b9d23457c9dbdffb65f2235f92f61b18841ed1bddc8d5b6eae27d89ac4b9802db6b81df3
|
|
7
|
+
data.tar.gz: 950362e174920f95c08309a8cfc406e1249612f554f0cd51df13f580c8f6a73492cca56e2ff597dcba94fbb6914d66e069569a23c5df0c139ded9c7983561860
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.2.0] - 2025-11-30
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Updated to use `OpenFeature::SDK::EvaluationContext` for proper context passing
|
|
10
|
+
- Requires `subflag-openfeature-provider` >= 0.1 (works best with 0.2+)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Fixed OpenFeature SDK require path (`open_feature/sdk` instead of `openfeature/sdk`)
|
|
15
|
+
- Fixed provider class reference (`Subflag::Provider` instead of `Subflag::OpenFeature::Provider`)
|
|
16
|
+
- Fixed OpenFeature client method calls to use keyword arguments
|
|
17
|
+
|
|
5
18
|
## [0.1.0] - 2025-11-30
|
|
6
19
|
|
|
7
20
|
### Added
|
data/lib/subflag/rails/client.rb
CHANGED
|
@@ -20,7 +20,7 @@ module Subflag
|
|
|
20
20
|
cache_key = build_cache_key(flag_key, ctx, :boolean)
|
|
21
21
|
|
|
22
22
|
result = RequestCache.fetch(cache_key) do
|
|
23
|
-
openfeature_client.fetch_boolean_value(flag_key, default, ctx)
|
|
23
|
+
openfeature_client.fetch_boolean_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
log_evaluation(flag_key, result, default)
|
|
@@ -81,15 +81,15 @@ module Subflag
|
|
|
81
81
|
def fetch_value_by_type(flag_key, default, ctx)
|
|
82
82
|
case default
|
|
83
83
|
when String
|
|
84
|
-
openfeature_client.fetch_string_value(flag_key, default, ctx)
|
|
84
|
+
openfeature_client.fetch_string_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
85
85
|
when Integer
|
|
86
|
-
openfeature_client.fetch_integer_value(flag_key, default, ctx)
|
|
86
|
+
openfeature_client.fetch_integer_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
87
87
|
when Float
|
|
88
|
-
openfeature_client.fetch_float_value(flag_key, default, ctx)
|
|
88
|
+
openfeature_client.fetch_float_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
89
89
|
when TrueClass, FalseClass
|
|
90
|
-
openfeature_client.fetch_boolean_value(flag_key, default, ctx)
|
|
90
|
+
openfeature_client.fetch_boolean_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
91
91
|
when Hash
|
|
92
|
-
openfeature_client.fetch_object_value(flag_key, default, ctx)
|
|
92
|
+
openfeature_client.fetch_object_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
93
93
|
when NilClass
|
|
94
94
|
raise ArgumentError, "default is required for value flags (it determines the expected type)"
|
|
95
95
|
else
|
|
@@ -100,15 +100,15 @@ module Subflag
|
|
|
100
100
|
def fetch_details_by_type(flag_key, default, ctx)
|
|
101
101
|
case default
|
|
102
102
|
when String
|
|
103
|
-
openfeature_client.fetch_string_details(flag_key, default, ctx)
|
|
103
|
+
openfeature_client.fetch_string_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
104
104
|
when Integer
|
|
105
|
-
openfeature_client.fetch_integer_details(flag_key, default, ctx)
|
|
105
|
+
openfeature_client.fetch_integer_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
106
106
|
when Float
|
|
107
|
-
openfeature_client.fetch_float_details(flag_key, default, ctx)
|
|
107
|
+
openfeature_client.fetch_float_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
108
108
|
when TrueClass, FalseClass
|
|
109
|
-
openfeature_client.fetch_boolean_details(flag_key, default, ctx)
|
|
109
|
+
openfeature_client.fetch_boolean_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
110
110
|
when Hash
|
|
111
|
-
openfeature_client.fetch_object_details(flag_key, default, ctx)
|
|
111
|
+
openfeature_client.fetch_object_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
|
|
112
112
|
when NilClass
|
|
113
113
|
raise ArgumentError, "default is required for evaluate (it determines the expected type)"
|
|
114
114
|
else
|
|
@@ -4,11 +4,11 @@ module Subflag
|
|
|
4
4
|
module Rails
|
|
5
5
|
# Builds OpenFeature evaluation context from user objects and additional attributes
|
|
6
6
|
class ContextBuilder
|
|
7
|
-
# Build an OpenFeature
|
|
7
|
+
# Build an OpenFeature EvaluationContext
|
|
8
8
|
#
|
|
9
9
|
# @param user [Object, nil] The user object for targeting
|
|
10
10
|
# @param context [Hash, nil] Additional context attributes
|
|
11
|
-
# @return [
|
|
11
|
+
# @return [OpenFeature::SDK::EvaluationContext, nil] The combined context or nil if empty
|
|
12
12
|
def self.build(user: nil, context: nil)
|
|
13
13
|
new(user: user, context: context).build
|
|
14
14
|
end
|
|
@@ -18,9 +18,9 @@ module Subflag
|
|
|
18
18
|
@context = context || {}
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
# Build the
|
|
21
|
+
# Build the OpenFeature EvaluationContext
|
|
22
22
|
#
|
|
23
|
-
# @return [
|
|
23
|
+
# @return [OpenFeature::SDK::EvaluationContext, nil]
|
|
24
24
|
def build
|
|
25
25
|
result = {}
|
|
26
26
|
|
|
@@ -34,7 +34,11 @@ module Subflag
|
|
|
34
34
|
result.merge!(@context) if @context.is_a?(Hash)
|
|
35
35
|
|
|
36
36
|
# Return nil if empty (no context to send)
|
|
37
|
-
|
|
37
|
+
return nil if result.empty?
|
|
38
|
+
|
|
39
|
+
# Convert to OpenFeature EvaluationContext
|
|
40
|
+
normalized = normalize_context(result)
|
|
41
|
+
OpenFeature::SDK::EvaluationContext.new(**normalized)
|
|
38
42
|
end
|
|
39
43
|
|
|
40
44
|
private
|
data/lib/subflag/rails.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
3
|
+
require "open_feature/sdk"
|
|
4
4
|
require "subflag"
|
|
5
5
|
|
|
6
6
|
require_relative "rails/version"
|
|
@@ -59,7 +59,7 @@ module Subflag
|
|
|
59
59
|
def setup_provider
|
|
60
60
|
return unless configuration.api_key
|
|
61
61
|
|
|
62
|
-
provider = ::Subflag::
|
|
62
|
+
provider = ::Subflag::Provider.new(
|
|
63
63
|
api_key: configuration.api_key,
|
|
64
64
|
api_url: configuration.api_url
|
|
65
65
|
)
|
metadata
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: subflag-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Subflag
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-12-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: subflag-openfeature-provider
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0.1'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '1.0'
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
29
|
version: '0.1'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.0'
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
34
|
name: railties
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|